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
    分支中

  • 另一个人从这个合并的remote
    master
    分支重新绑定到他自己的remote
    dev-x
    分支

  • 步骤2)中的同一个人合并回远程
    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
    分支的更改。