本书的部分:
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”要求输入提交消息,然后按照书中的描述行事。
答案 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
版本。