【只谈干货】git的核心概念与必须掌握的操作(1)

如果只是想快速上手git,上传文件到github,可以参考这篇文章:
https://blog.csdn.net/ys578676728/article/details/89246839
可以科学上网的同学也可以学习这套英文教程(本文截图均出自此教程):
https://www.youtube.com/watch?v=uR6G2v_WsRA

命令作用
git status查看当前状态
git add S1将S1提交到暂存区
git commit -m "add file S1"提交暂存区文件到版本区
git log查看commit记录
git log -- S2查看影响S2的commit记录
git diff查看工作区和暂存区文件的差别
git diff --staged查看暂存区和版本区文件的差别
git rm S2从工作区和暂存区中同时删除S2
git checkout -- S1回溯S1:用暂存区中的S1代替工作区中目前的S1
git reset HEAD S1回溯S1:用版本区最近版本的S1代替暂存区中的S1
git checkout 9ddb9 -- S1回溯S1:用版本区hash value为9ddb9的S1代替工作区暂存区的S1

1. 关于git你必须知道的事情

  1. git是一个版本管理工具,它可以帮你记录代码/文件的变化,可以理解成给每个版本的文件都拍了张照片保存下来,这个拍照的操作称作commit;
  2. 每次commit(拍照)会记录下是谁在什么时间执行的这个操作,同时会生成一个对应的hash value,方便日后快速找到该版本的文件;
  3. git仓库有三个重要的区域:
    - 工作区(working tree):本地系统中的普通文件夹,可以增加、删除、修改文件
    - 暂存区(staging area):暂时缓存文件的地方
    - 版本区(history):用来储存commit文件的地方,在本地隐藏的.git文件夹中

2. 安装与初始化

  • git的安装(ubuntu)
    sudo apt-get install git
  • 配置git用户名和邮箱,这样系统就可以知道每次是谁执行的commit操作
    git config --global user.name "username"
    git config --global user.email "myemail@some.com"
    如果对特殊的文件夹需要单独设置用户名和邮箱可以使用 –local
    git config --local user.name "username"
    git config --local user.email "myemail@some.com"
    查看当前设置:
    git config --list
  • 初始化,生成一个隐藏的.git文件夹
    git init

3. git commit

  • 查看当前状态
    git status
  • 添加文件S1到暂存区
    git add S1
  • 提交暂存区文件到版本区,-m指使用一个message来描述本次commit
    git commit -m "add file S1"
    在这里插入图片描述
  • 每次commit后会返回一个SHA-1 hash value的前7位数eb231ee
    在这里插入图片描述
  • 查看commit记录
    git log
    在这里插入图片描述

4. second commit (edit S1, add S2)

  • 查看状态
    因为之前commit过所以S1是tracked状态。但是因为S1被修改了,所以此时还未staged。
    S2为新建文件,因此现在是untracked状态。
    在这里插入图片描述
  • 查看工作区和暂存区文件的差别,因为S2是untracked状态所以不会进行比较
    git diff
    在这里插入图片描述
  • 重新将S1和S2添加到缓存区
    git add .
  • 查看缓存区和版本区最近版本的文件的差别
    git diff --staged
    在这里插入图片描述
  • 第二次commit
    git commit -m "add S2 and edit S1"

5. remove a file

  • 删除S2,同时从工作区和暂存区中删除
    git rm S2
    在这里插入图片描述
  • commit这次removal操作,不使用 -m会跳转到系统默认的文本编辑器去编写更详细的多行message
    git commit
  • 整理最近三次的commit操作
    在这里插入图片描述

6. 回溯之前版本的文件

  • 修改S1
  • 回溯工作区S1的修改:用暂存区中上一版本的S1替代目前工作区中的S1
    git checkout -- S1
    在这里插入图片描述
  • 修改S1并add到暂存区
  • 回溯暂存区S1的修改:用版本区最近的S1版本替代暂存区中的S1,HEAD表示最近的commit。如果想回溯到工作区,需要再使用一次git checkout命令。
    git reset HEAD S1
    在这里插入图片描述
  • 查看影响S2的commit记录
    git log -- S2
    在这里插入图片描述
  • 从更早的版本中回溯被删除的S2:将该版本中的S2同时放回到工作区和暂存区。
    git checkout 9ddb9 -- S2
    在这里插入图片描述

7. 用.gitignore处理不需要git管理的文件

  • 新建一个.gitignore文件
    vim .gitignore
  • 在.gitignore文件中写入不需要git管理的文件,如:所有.pyc结尾的文件,logs/文件夹下的文件。
    在这里插入图片描述
  • 查看git当前状态,发现只有.gitignore文件。此时只需像其他文件一样add和commit该文件就可以了。
    在这里插入图片描述
  • 最终三个区域的状态如下
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值