代码之家  ›  专栏  ›  技术社区  ›  David Parks

如何在Git中扩展分支的工作

  •  0
  • David Parks  · 技术社区  · 6 年前

    我已经创建了一个分支A,它在合并到master之前要经过一个扩展的审查。

    当审查开始时,我需要创建B分支,它建立在A分支中的工作的基础上(此时已冻结)。

    如下所示:

    git checkout branchB
    git rebase branchA
    

    我们的工作流通常让我们重新定位到master,然后做一个交互式的重新定位,将提交压缩为一个干净的提交,以便合并到master。

    问题是 branchB 将无法恢复到 branchA 在交互重新定位之后(并且是必要的 push -f )没有不必要的合并冲突。如果我理解正确, 分支 当我用力推的时候会失去它的后代历史 布兰卡 .

    是否有其他方法可以在这样的分支上进行构建,从而避免后续的错误合并冲突?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Bill    6 年前

    重新定位 branchB 被压扁的 branchA 不会导致任何合并冲突。重新定位中的合并冲突 分支 只应产生于最初发生的任何合并冲突解决 rebase 属于 布兰卡 到上面 master .

    你可以表演你的互动 回扣 压扁 布兰卡 在重新定位到 主人 . 然后重新定位 分支 到新压扁的 布兰卡 ,然后把剩下的 布兰卡 提交到远程 主人 . 这将只允许您在单个rebase中解决任何合并冲突。

    在branchB上,你只需几步就可以做到:

    1. git rebase -i origin/master <--挤压所有branchA提交,但不挤压branchB提交
    2. git push origin <hash of single squashed branchA commit>:master
        2
  •  1
  •   Jake Haller-Roby    6 年前

    在脱离主服务器之前,您需要将branchB合并到branchA上。

    通常,在合并到另一个分支之前,最不应该做的事情就是重新调整另一个分支的位置。在你准备好合并之前,回扣并没有真正的好处。

        3
  •  1
  •   jthill    6 年前

    git branch -t branchB branchA
    

    (见 git branch 有关如何在已创建的分支上设置上行流的文档)。

    在branchA重新定位之后,正确地重新定位签出的branchB的命令是

    git rebase
    

    Git会自动跟踪上游的回扣,默认情况下,如果您遇到某些情况,它自己找不到合适的分叉点(请参阅回扣文档),请发布一个关于这种情况的问题,并提供具体的详细信息?