阅读了Mark Dominus的文章和Scott Chanon的文章后,我认为git reset abcd --soft
不会影响索引,但是下面的内容表明它确实会。
重置之前
仓库中有c1.txt
、c2.txt
、c3.txt
,索引中有c4.txt
。所有文件都在工作目录中:
历史记录:
$ git log --oneline --decorate
b91d91b (HEAD, master) C3
231a5df C2
7e7b2d7 C1
索引:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: c4.txt
工作目录:
$ ls
c1.txt c2.txt c3.txt c4.txt
重置到C2提交
$ git reset 231a --soft
$ git log --oneline --decorate
231a5df (HEAD, master) C2
7e7b2d7 C1
索引已更改
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: c3.txt
new file: c4.txt
$ ls
c1.txt c2.txt c3.txt c4.txt
我原本认为会发生什么
从Scott的文章中,他说:
reset将要做的第一件事情是移动HEAD指向的内容...如果你添加了--soft标志,那么这是它唯一要做的事情。使用--soft,reset将只停留在这里。
所以,我认为索引(我希望我已经理解了在git status
输出中显示的内容)不会改变,也就是说,它仍然包含c4.txt
。但上面的输出显示它实际上包含c3.txt
和c4.txt
。
看起来,c3.txt
已经与c4.txt
一起移动到索引中。