2013-09-20 5 views
0



У меня есть следующие истории в Git:Git удалить совершает между ветвями

(master) A - B - C 
        \ 
(dev)    D - E - F - G - H - I 

Я хотел бы создать что-то вроде этого:

(master) A - B - C 
       | \ 
(patch_1)  |- E' - G' (G' shouldn't contain the changes happened at F commit) 
(patch_2)  |- D' - F' (F' shouldn't contain the changes happened at E commit) 
(dev)   |- D - E - F - G - H - I 

Можно ли создать что-то вроде этого ?

Если невозможно, то что лучше из следующего варианта:
1. Внесите код с самого начала?
2. Сквош все эти коммиты в одном с «хорошим» и большим сообщением о совершении?

+0

Как насчет (H - I) фиксируется в patch_1, patch_2 branch ?? – Shunya

+0

Я не хочу, чтобы они присутствовали на patch_1, patch_2 branch – LiTTle

ответ

0

Одно из возможных решений, о которых я могу думать, это использование git cherry-pick.

  1. Изменения в Dev отрасли, получить SHA-1 фиксаций E, G, D и F (с использованием протокола мерзавец --oneline).

  2. Из главной ветки создайте ветвь patch_1 и введите команду git cherry-pick с SHA-1 из E, G (в качестве аргументов).

  3. От главной ветки создайте ветвь patch_2 и введите команду git cherry-pick с SHA-1 из D, F (в качестве аргументов).

+0

Я начал использовать git не так давно. Когда я заберу фишку F, я получу изменения, произошедшие при совершении E или нет? – LiTTle

+0

По моим сведениям, вишневый выбор предназначен для одной фиксации. – Shunya

+0

@ user1562655 'cherry-pick' может фактически использоваться для нескольких коммитов. Он даже принимает диапазоны фиксации в качестве аргумента. –

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