GIT获取/合并和推送周期 - 导致创建其他提交 - 为什么?

时间:2012-03-08 22:44:26

标签: git

我正在努力让我的小组使用git(使用svn)。我们有一个“中央”系统,裸存储库作为我们的共享/备份系统。目前有两个存储库,用于测试git - 将它们称为A和B.简单地说,我们正在使用这个循环(到目前为止只有2个人正在测试):

- edit and commit
- git fetch origin
- git diff origin/master master # to see what merge will do
- git merge origin/master master  # merge
- git push   # share the merged commit

对于存储库A,如果一个人进行了更改,那么另一个人进行了获取/合并/推送,事情状态“稳定下来”到两个人都显示{{1的'Everything up-date' }}。

然而,在存储库B中,我们有一个'乒乓'效果,不断产生新的合并注释。 gitk将一个提交显示为“merge branch'master',remote branch origin / master”,然后显示“merge branch'master',remote-TRACKING branch origin / master”。 [我把TRACKING放在大写字母中以显示差异。]'git remote show origin'为两个用户显示相同的信息。

我确定你们其中一个GIT专家的问题很明显 - 请指教!感谢。

1 个答案:

答案 0 :(得分:1)

您的问题与您错误使用合并命令有关:

git merge branch1 topic 

将产生一个“章鱼”合并,其中有两个以上的父母。

而不是合并,你应该使用:

git checkout master
git merge origin/master

另一种可能性是,如果有两个人正在处理回购B,并且他们按照你的方案按照本书的方式进行操作 - 他们将会出现合并提交的问题。 如果您正在使用master分支进行开发,并且您知道其他人可能已经更新了它,您应该使用(您在主分支中):

git commit ...
git fetch origin
git diff origin/master master
git rebase origin/master

这将简化历史。

现在更短的变体(如果您以后可以查看差异):

git commit 
git pull --rebase 

希望有所帮助!