2013-05-21 2 views
3

Как я могу объединить 1-ю фиксацию с 4-м фиксацией в git, используя 'git rebase'. Из того, что я читал здесь http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html, команда 'squash' в 'git rebase' только объединяется в предыдущую фиксацию.Как я могу объединить фиксацию с помощью git rebase

в мерзавца, у меня есть

$ git log 
commit 9a30d13 
commit 4a6729e 
commit 4a6729e 
commit 4a6729e 
commit a610898 

В принципе, я хочу от изменения 9a30d13 сочетать с изменениями в a610898, так что новая история

$ git log 
commit 4a6729e 
commit 4a6729e 
commit 4a6729e 
commit a610898 + 9a30d13 

Я не нажат ничего.

спасибо.

ответ

4

Когда вы делаете интерактивную перезагрузку, как описано в вашей ссылке, вы можете изменить порядок. Как только вы измените заказ, вы можете сквозировать 9a30d13 в a610898.

Когда интерактивный перебазироваться приходит, это будет выглядеть примерно так (с самым старым совершающее на вершине):

pick a610898 Message A 
pick 4a6729e Message B 
pick 4a6729e Message C 
pick 4a6729e Message D 
pick 9a30d13 Message E 

Вы затем изменить их порядок:

pick a610898 Message A 
pick 9a30d13 Message E 
pick 4a6729e Message B 
pick 4a6729e Message C 
pick 4a6729e Message D 

И изменить 9a30d13 к squashpick:

pick a610898 Message A 
squash 9a30d13 Message E 
pick 4a6729e Message B 
pick 4a6729e Message C 
pick 4a6729e Message D 

Сохраните & выйдите, и все готово. У вас будет возможность ввести новое сообщение фиксации для вашего нового сообщения a610898 + 9a30d13.

+0

@ 0x90, что это значит? –

+0

Я имел в виду, если бы вы могли публиковать все команды и выходы из оболочки, но похоже, что вы это сделали. вы хотели использовать git перед каждой строкой? – 0x90

+0

no - что вы видите, есть редактор, который вы получаете, когда запускаете 'git rebase --interactive ** somesha **' – Chronial

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