通读了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
Run Code Online (Sandbox Code Playgroud)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: c4.txt
Run Code Online (Sandbox Code Playgroud)
$ ls
c1.txt c2.txt c3.txt c4.txt
Run Code Online (Sandbox Code Playgroud)
$ git reset 231a --soft
$ git log --oneline --decorate
231a5df (HEAD, master) C2
7e7b2d7 C1
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
从 Scott 的文章中,他说:
reset 会做的第一件事是移动 HEAD 指向的东西.... 如果你添加标志 --soft,这是它唯一会做的事情。使用--soft,重置将简单地停在那里。
所以,我认为索引(我希望我已经理解为git status上面输出中显示的内容)不会改变,也就是说,它仍然包含c4.txt. 上面的输出显示它实际上包含c3.txt和c4.txt。
似乎c3.txt已被移入索引旁边c4.txt。
小智 5
根本的误解似乎是关于指数是什么。索引不是一组差异,而是一组文件。什么git status节目是不是指数,但最后的区别承诺和索引。
你之前git reset --soft,该指数包含的文件c1.txt,c2.txt,c3.txt和c4.txt。所以在你之后git reset --soft,索引仍然包含那些相同的文件。git status会以不同的方式报告这一点,但这不是因为索引发生了变化,而是因为提交发生了变化。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |