代码之家  ›  专栏  ›  技术社区  ›  zoul

在执行其他几个提交之后,如何将提交分离为分支?

  •  1
  • zoul  · 技术社区  · 14 年前

    我有一个具有以下结构的Git repo:

    A--B--C--D--E
    

    我想将C commit分为一个分支:

         C
        / \
    A--B---D--E
    

    我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  2
  •   bdukes Jon Skeet    14 年前
    git branch new-branch C
    

    将创建指向的新分支 C 命名的 new-branch ,结果是:

        new-branch     HEAD
              |         |
    A -> B -> C -> D -> E
    
        2
  •  2
  •   Adam Dymitruk    14 年前

    正确的答案是尊重D在输出中有两个父级这一事实。我想E是被主人指着的。

    git branch new-branch C
    git checkout -b merge-base B
    git merge --no-ff new-branch
    git rebase --onto merge-base D^ master
    git checkout master
    

    你最终会得到:

         C
        / \
    A--B---Y--D'--E'
    

    这将在合并到主分支时保留C作为父级。你可以用git rebase把D压缩成Y-我的头。你会得到:

         C
        / \
    A--B---D''--E''