Git和GitHub的新手,我做错了吗?

时间:2011-06-26 23:42:37

标签: github msysgit

我对一个现有文件test.cs进行了更改

  1. git add。
  2. git commit -m“my change to test.cs”
  3. git pull origin master
  4. >它会拉下SomeOtherFile.cs(由其他人更改,而不是新的)
  5. >我检查了构建......)
  6. git push
  7. 当我去github时,我的推送下有两个提交,一个用于'test.cs',一个用于SomeOtherFile.cs

    这是预期的行为吗?

    谢谢..

2 个答案:

答案 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

让流程继续进行。这里发生的是通过重新定义原始提交来处理冲突,而不是通过添加合并提交来处理冲突。但它保持文件历史记录清洁,合并不如您所见。