我正在努力让我的小组使用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专家的问题很明显 - 请指教!感谢。
答案 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
希望有所帮助!