将所有分支(包括child和grandchilden)从他们的祖先重新定位

时间:2015-11-18 18:01:57

标签: git git-rebase

我有一个Git存储库,如下所示:

A-B-F  (master)
|\   
C \    (feature-1)
   D   (feature-2)
    \
     E (feature-3)

有没有办法自动将所有功能分支(儿童和孙子)自动转换为F,如下所示?

A-B-F (master)
    |\   
    C'\    (feature-1)
       D'  (feature-2)
        \
         E'(feature-3)

我查看了Rebasing a branch including all its childrenHow to rebase a series of branches?的回复,但他们既没有报道这个案例,也没有给出明确的答案。

1 个答案:

答案 0 :(得分:3)

anwser与相关问题中的相同:git中没有内置任何内容。您可以手动执行此操作,如下所述。之后,您可以尝试将其放入脚本中......

您可以手动执行此操作:

git checkout feature-1
git rebase master
git checkout feature-2
git rebase master
git checkout feature-3
git rebase feature-2

帮助您开始编写自己的脚本:

git branch --contains <sha-1> | xargs -n 1 | grep -v "\*" | grep -v master

将为您提供包含提交<sha-1>的所有分支的列表。然后你可以查看this question来找到如何找到第一级后代的代码......将这两个信息放在一起;你能够编写你想要的脚本。