合并和改组远程分支

时间:2012-07-31 23:02:27

标签: git git-merge git-rebase

我有一个本地分支master,并跟踪两个远程分支masterdev-me。同时,另一位开发人员拥有自己的本地master,并跟踪同一个远程master和他自己的专用远程分支dev-other

我们每次都会分别从自己的本地master推送到远程开发分支(即dev-medev-other)。然后,我们希望将远程dev-x分支合并到远程master分支。

我正在考虑做以下事情:

  1. 我们中的任何一个将其远程dev-x分支合并到远程master分支。

  2. 另一个人从此合并的远程master分支重新绑定到他自己的远程dev-x分支。

  3. 第2步中的同一个人合并到远程master分支。

  4. 这是正确的做法吗?

2 个答案:

答案 0 :(得分:0)

您没有正确使用分支。看一下我的帖子,看看你不应该专注于dev拥有什么主分支和主分支。您应该专注于正在进行的分支机构或功能分支,并使用其他分支来管理它们的集成:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

答案 1 :(得分:-1)

你太复杂了。将git中的所有内容都想象成本地操作并忽略其他人并将远程仓库视为共享存储区域。

听起来(如果我有你的权利)你们每个人都在主人中工作但是同时推动原点/主人和原点/ dev-something。这有效,但可能令人困惑。如果你在master工作,请推送到掌握。如果你想推销dev-something,在dev-something 的本地副本中工作。

听起来你有这个,如果你想合并所有远程资料,请执行以下操作:

git fetch --all
git checkout master
git merge origin/master origin/dev-me origin/dev-other
[resolve conflicts]
git push origin master:master

如果您决定使用rebase,则需要将每个远程分支重新键入主服务器,这虽然为您提供线性历史记录,但并不能真正代表并行开发的实际情况。另外,你需要决定哪些变化是“第一次”。

我建议如果你们每个人都在本地开发 - 无论什么分支工作并且专门推送到该分支的上游版本,那就更好了。当您想要将代码导入master时,请检查master的本地副本,合并dev-whatever的本地副本,然后重新启动本地主服务器。正是如此:

git checkout dev-whatever
git fetch --all
git merge origin/dev-whatever
[hack hack hack]
git commit -a
git push origin dev-whatever:dev-whatever
[decide you want to integrate what you've got into master]
git checkout master
git merge dev-whatever
git push origin master:master

如果你们两个都这样做,那么你们每个人都会整合你自己的变化。如果你的同事已经推动了,你的推动他/她自己的推动合并了变化,你的推动就会失败。不用担心,你需要做的就是:

 git fetch --all
 git merge origin/master
 [resolve conflicts]
 git push origin master:master

在这种情况下,你可以用rebase替换merge,只需使用“他得到第一个”方法来决定提交顺序。