具有合并子项的 Git rebase 分支

2024-01-02

今天我面临一个问题。我的队友从 master 创建了分支。他在这个分支中开发了一个功能,然后在子功能的分支中开发了两个子功能。最后他对整个事情做了两次重构提交。所以...

     C--D    E--F             | subfeatures
    /    \  /    \
   B------M1------M2--G--H    | feature
  /
 A-------------------K        | master

通常我们会在将特征分支无快进合并到主分支之前对其进行变基。但当然这个变基失败了。重新基础的功能分支看起来像:

     B'--C'--D'--E'--F'--G'--H'
    /
A--K

当然,C & D 的指针出错了,所以我还得到了两个“从空中”生长的子功能分支。我知道如果子功能分支没有合并到功能中如何修复它,但此时我很困惑。我挑选了重新调整的恢复分支中的所有内容并再次合并。这里有更简单的方法吗?


请注意,您需要 git1.7.6+git rebase --preserve-merges才能正常工作。

  • a rebase --preserve-merges --onto之前没有工作(“git rebase --preserve-merges --onto不保留合并 https://stackoverflow.com/questions/9521422/git-rebase-preserve-merges-onto-doesnt-preserve-merges")
  • a rebase --preserve-merges had issue in some instance:
    • see 这个线程 http://git.661346.n2.nabble.com/git-rebase-preserve-merges-seems-to-not-work-td5513265.html,当合并双方都重播时)
    • "Git:变基合并提交 http://apasca.blogspot.fr/2012/02/git-rebasing-merge-commits.html“(亚历山德鲁·帕斯卡的帖子)

长话短说:您刚刚完成了合并,有人在您能够推送自己的提交之前推送了提交。解决方案是让 git 知道你所做的合并。

git rebase --preserve-merges <upstream>

or

git rebase -p <upstream>

但有一个问题,如果您的合并存在已解决的冲突,则变基机制不会拾取这些冲突。
你最终将再次解决冲突......至少 git 版本 1.7.5.4 是这样

(这需要git rerere https://git-scm.com/docs/git-rerere)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有合并子项的 Git rebase 分支 的相关文章

随机推荐