与git-scm书相反,Git提交了以前暂存的文件的无阶段更改

时间:2012-08-31 15:47:49

标签: git commit git-commit git-add

本书的部分:

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Staging-Modified-Files

说如果我更改文件A,运行'git add A'然后再次更改文件A,在此文件上运行'git commit',只会提交之前暂存的更改。提交非分段更改 - 再次添加文件然后提交。

经过一些测试,但事实证明git提交了文件A的所有更改,甚至是文件最初暂存后所做的更改。

任何人都可以对此事有所了解吗?感谢。

编辑: 我没有使用-a选项 看起来如果我为“git commit A”明确指定了文件(我没有使用-a选项),它也会提交非分段更改。提交没有文件“git commit”要求输入提交消息,然后按照书中的描述行事。

2 个答案:

答案 0 :(得分:1)

您提交时可能会添加-a选项,这会在提交之前添加另一个选项。它的工作方式与省略-a

时的描述相同

答案 1 :(得分:1)

您如何确定“提交文件A的所有更改”?我无法在我的git版本上重现这一点。重申我认为你在说什么,如果你遵循这个过程:

$ git add A                 #initial commit of A
$ git commit -m first
$ <modify A>
$ git add A                 #stage first set of changes
$ <modify A again>
$ git commit -m second      #without staging second modifications

此时您应该看到的是第一组更改,而不是第二组更改已提交。 git show HEAD:A应该在您进行第二次修改之前显示文件。但是,第二次修改仍将在您的文件工作副本(cat A)中,并且git status应报告A中存在未分级的更改。这正是我在尝试复制此文件时所获得的,是应该期待的。

如果那不是您所看到的,那么您要么做了与上面列出的不同的事情,要么以某种方式运行您正在运行的git版本。