2015-08-25 5 views
0

В настоящее время у меня есть мой удаленный развивать отрасль с фиксаций, как:Git разделяй совершает между ветвями

C1 ->C2 ->C3 ->C4 ->C5 ->C6

(Сх, как совершить х)

мне нужно разделить эти коммиты новые ветви, так что это будет выглядеть следующим образом:

Разработка филиала: C1C2C6

NewBranchTwo: C3C5

NewBranchThree: C4

(NewBranchTwo и NewBranchThree не нужно, чтобы стать дистанционное управление)

Как я этого добиться?

ответ

2

git rebase - твой друг.

Один простой способ сделать это состоит в использовании git branch производить три идентичных ветви (разработка, NewBranchTwo, NewBranchThree), который затем редактировать вниз с помощью

git rebase --interactive C1 

... замена C1 с хэш-х или фиксации другой ссылка. В интерактивном режиме git сначала откроет текстовый редактор, где он покажет вам всю историю, и где коммиты будут применяться по порядку сверху вниз в соответствии с любыми удалениями или переупорядочениями, которые вы делаете в редакторе. Вы можете легко удалить C3-C5 для разработки и внести соответствующие изменения в другие ветви.

Вы также можете пропустить интерактивный режим и использовать git reset и git rebase --onto, чтобы переместить C6 на C2 и имя, которое разрабатывается, и то же самое с C3 на вашу верхнюю головку и C5 на это (и т.д.). Не зная фактических хэшей или родительского элемента C1, я оставлю фактические команды там git rebase documentation.

(Вы кладете в тегах, но если вы пытаетесь разделить фиксации, git revert не поможет:. Он записывает новых коммитов, которые отменяют существующие коммиты, не удаляя их Если вы хотите историю, чтобы посмотреть как это делает, а не C1 C2 C3 C4 C5 C6 rev-C5 rev-C4 rev-C3, вам необходимо перебазировать или иным образом изменить историю.)


Как вы, наверное, знаете, в любое время вы регулировочные фиксации, которые уже произошли, то изменить их хэш и могут затруднить для всех, кто уже разветвлен. Надеюсь, вы еще не продвинули свою удаленную ветку развития!

+0

Я закончил делать что-то еще, но я думаю, что ваша идея - лучшая –

0

То, что я в конечном итоге делает:

Разработка: C1 C2 C3 C4 C5 C6 rev-C6 rev-C5 rev-C4 rev-C3 rev-C2 rev-C1

От разработки я создал NewBranchTwo и NewBranchThree - так что все три были все коммиты вернулась.

Тогда на каждой ветви: Разработка филиала: rev-rev-C1rev-rev-C2rev-rev-C6

NewBranchTwo: rev-rev-C3rev-rev-C5

NewBranchThree: rev-rev-C4

Поэтому в основном я вернулся всех фиксаций, создал две новые ветви, а затем на каждая ветвь i вернула возвращенные коммиты, которые мне нужны.

Смежные вопросы