Git 合并并重新设置远程分支的基础
我有一个本地分支Git 合并并重新设置远程分支的基础,git,git-merge,git-rebase,Git,Git Merge,Git Rebase,我有一个本地分支master,跟踪两个远程分支master和dev me。同时,另一个开发人员拥有自己的本地主机,并跟踪同一个远程主机,以及自己的专用远程分支开发其他 不时,我们各自从本地主机推送到远程开发分支(即开发我或开发其他)。然后,我们希望将我们的远程dev-x分支合并到远程master分支中 我想做以下几件事: 我们中的任何一个都将远程dev-x分支合并到远程master分支中 另一个人从这个合并的remotemaster分支重新绑定到他自己的remotedev-x分支 步骤2)中的同
master
,跟踪两个远程分支master
和dev me
。同时,另一个开发人员拥有自己的本地主机
,并跟踪同一个远程主机
,以及自己的专用远程分支开发其他
不时,我们各自从本地主机
推送到远程开发分支(即开发我
或开发其他
)。然后,我们希望将我们的远程dev-x
分支合并到远程master
分支中
我想做以下几件事:
dev-x
分支合并到远程master
分支中master
分支重新绑定到他自己的remotedev-x
分支master
分支这是一种正确的方法吗?你把它复杂化了。把Git中的每一个都看作是本地操作,忽略其他人,并将远程回购作为共享存储区。 听起来(如果我没记错的话)你们每个人都在master中工作,但都要把它们推到origin/master和origin/dev上。这是可行的,但可能会令人困惑。如果您在master中工作,请推到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上,这虽然提供了一个线性历史,但实际上并不代表并行开发的现实。此外,您还需要决定谁的更改“第一”
我建议,如果你们每个人都在本地的dev分支工作,并且只推到该分支的上游版本,这会更好。当您想要将代码放入master时,签出master的本地副本,合并dev的本地副本,然后将本地master推回。因此:
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,只需使用“他得到了他们的第一个”方法来决定提交顺序。您没有正确使用分支。看看我的帖子,你不应该把重点放在dev的主分支和主分支上。您应该关注在建分支或功能分支,并使用其他分支管理其集成:
我只是想澄清一下。在第2步中,您将通过将dev-x提交放在合并主机的顶部来重新设置基础,对吗?如果是这样,我看不出有什么问题。Dev1还可以将其分支合并到远程主机,然后Dev2将其分支合并到Dev1的结果merge@AndréOriani,是的,确实如此,重新基础步骤从远程
主接收合并的更改,并应用远程dev-x
分支的更改。