Git易混概念与命令

一、工作目录,暂存区,提交区

在使用 Git 来进行版本管理时,文件会流转三个区域,分别是工作目录,暂存区,提交区。这3个区域对应的 git 命令如下图所示: 
这里写图片描述 
可以看到,git reset命令目的是将暂存区恢复到某个状态,而git checkout命令则是将工作目录恢复到某个状态。

二、未跟踪,已跟踪

对于文件来说,则存在两种状态:未跟踪与已跟踪。可以使用 git add 命令来对文件进行跟踪,使用 git rm 命令来取消对文件的跟踪。 
这里写图片描述

三、checkout与reset

在 git 的每次提交时,都会生成一个 commit (提交)对象。commit 对象包含一些提交的信息,并指向前一个 commit 对象。例如下图中间横向区域可以看到四个带数字和字母混合的方框,表示四个 commit 对象,说明包含了四次提交。

这里写图片描述

Git 的分支,其本质上仅仅是个指向 commit 对象的可变指针。Git 使用 master 作为分支的默认名字。若干次提交后,其实已拥有一个指向最后一次提交对象的 master 分支,master 指针在每次提交时都会自动向前移动。 
可以使用 git branch testing 来创建一个新的分支(实质是创建一个新的 testing 指针指向 commit 对象)。 
那么,git 是如何知道当前在哪个分支上工作呢?答案很简单,git 保存着一个名为 HEAD 的指针,指向正在工作中的分支指针。例如上图所示。

对于 reset 和 checkout 两个命令来说,其作用对象,既可以为文件,也可以为提交对象。 
根据执行命令后是否移动 HEAD 指针和分支指针,可以得到以下的表格,这个表格清晰说明了 reset 和 checkout 的区别。

命令 范例 是否移动HEAD指针/分支指针 说明
git reset [commit] git reset e390b3 是 / 是 HEAD指针和当前分支指针都回退到某提交上
git reset [file] git reset README.md 否 / 否 恢复暂存区到某提交状态
git checkout [commit] git checkout master 是 / 否 只移动HEAD指针到某提交上
git checkout [file] git checkout – README.md 否 / 否 恢复工作目录到某状态

可以看到,reset 和 checkout 两个命令作用于文件时,只会修改工作目录或者暂存区的内容,并不会修改指针;而作用于提交对象时,则会修改指针

http://blog.sina.com.cn/s/blog_164ca12670102wr2b.html
http://blog.sina.com.cn/s/blog_16496988c0102wrf8.html
http://blog.sina.com.cn/s/blog_164ca14980102y2gs.html
http://blog.sina.com.cn/s/blog_164b98d990102wkzu.html
http://blog.sina.com.cn/s/blog_164b98e3c0102ws4f.html
http://blog.sina.com.cn/s/blog_164969b3e0102wpew.html
http://blog.sina.com.cn/s/blog_164ca16610102wl5b.html
http://blog.sina.com.cn/s/blog_164ca169c0102xnra.html
http://blog.sina.com.cn/s/blog_164a8d4400102wphx.html
http://blog.sina.com.cn/s/blog_164ca26e80102x378.html
http://blog.sina.com.cn/s/blog_164ca2a1e0102wqsr.html
http://blog.sina.com.cn/s/blog_16496afda0102wp22.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值