У меня есть репозиторий Git со следующей структурой:Как отделить фиксацию в ветку после выполнения нескольких других коммитов?
A--B--C--D--E
я хотел бы разделить C совершить в отрасли:
C
/\
A--B---D--E
Как я могу это сделать?
У меня есть репозиторий Git со следующей структурой:Как отделить фиксацию в ветку после выполнения нескольких других коммитов?
A--B--C--D--E
я хотел бы разделить C совершить в отрасли:
C
/\
A--B---D--E
Как я могу это сделать?
git branch new-branch C
создаст новую ветвь, указывающую на C
имени new-branch
, в конечном итоге с этим:
new-branch HEAD
| |
A -> B -> C -> D -> E
Ах да, красота указателей. Благодаря! – zoul
не выводит желаемый график в вопросе. –
Правильный ответ чтить тот факт, что D имеет 2 родителей на выходе, что вы хотите. Я собираюсь предположить, что на 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 в качестве родителя в слиянии в основную ветвь. Вы можете раздавить D в Y с git rebase -i head ^^^. Тогда у вас будет:
C
/\
A--B---D''--E''
Линия 'B --- D', вероятно, посторонняя - вы не переписываете какие-либо коммиты, просто переименование вещей. –
Если новая ветка должна быть долговечной и синхронизирована с текущей, может быть желательной линия B-D. Зависит от того, чего вы хотите. –
@adymitruk Нет, я имею в виду, что D не имеет B как родителя, поэтому два графика имеют разные истории. –