Как разделить коммит на ветку после нескольких других коммитов? - PullRequest
1 голос
/ 17 ноября 2010

У меня есть репозиторий Git со следующей структурой:

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

Я хочу разделить коммит C на ветку:

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

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Правильный ответ - учесть тот факт, что у D есть 2 родителя на выходе, который вы хотите. Я собираюсь предположить, что хозяин указывает на Е.

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 как родителя при слиянии с основной веткой. Вы можете раздавить D в Y с помощью git rebase -i head ^^^. Вы бы тогда имели:

     C
    / \
A--B---D''--E''
2 голосов
/ 17 ноября 2010
git branch new-branch C

создаст новую ветку, указывающую на C с именем new-branch, заканчивающуюся этим:

    new-branch     HEAD
          |         |
A -> B -> C -> D -> E
...