我对一个现有文件test.cs进行了更改
当我去github时,我的推送下有两个提交,一个用于'test.cs',一个用于SomeOtherFile.cs
这是预期的行为吗?
谢谢..
答案 0 :(得分:2)
当您执行git add .
时,您将对工作目录中任何文件的更改添加到索引中。如果您只想为test.cs
创建提交,请改为:
git add test.cs
答案 1 :(得分:0)
所以你在这里遇到的是Merge和Rebase之间的区别。当你做了:
git pull origin master
您创建了一个合并提交,它合并了来自master的更改。该合并提交是空的,但它已创建。合并中的这种行为是预期的,但在我看来是不可取的。创建提交是为了保存两个分支(您的本地和Origin Master)之间的差异,并且无论是否存在任何差异,都会创建提交。如果您已经发出了
git pull --rebase origin master
你会做一个rebase。一个rebase查找本地和Origin Master共同的最后一次提交,将自提交后的更改留给临时存储,然后对来自Origin Master的更改进行分层(来自NotYou的SomeOtherFile.cs提交),最后重放您的更改在新的更新线之上。这个重放是通过提交完成的,所以如果你提前10次提交,它将发生10次。
如果没有冲突,那么这一切都会立即发生而无需干预。如果有冲突,那么你将在中间停止,要求纠正问题,然后你发出一个
git rebase --continue
让流程继续进行。这里发生的是通过重新定义原始提交来处理冲突,而不是通过添加合并提交来处理冲突。但它保持文件历史记录清洁,合并不如您所见。