2015-08-04 3 views
0

Предположим, что у меня есть 4 ветки: part1, part2, part3 и master. Часть 1 имеет 1 фиксацию (первая фиксация), часть 2 имеет 2 фиксации (первая фиксация, вторая фиксация), а часть 3 имеет 3 фиксации (первый, второй и третий). Я хочу внести некоторые изменения в первый коммит в части 1, а также отразить эти изменения в других фиксациях других филиалов. Каков самый быстрый способ сделать это?Внесение изменений в старый фиксатор

+0

Пожалуйста, ознакомьтесь с приведенными ответами. –

ответ

0

К сожалению, я не могу придумать ни одной серебряной пули, которая позволила бы вам внести изменения в первую фиксацию в ветке part1 и автоматически обновить ее в остальных трех ветвях. Основная причина этого заключается в том, что первая фиксация фактически различна во всех 4 ваших филиалах. Вы можете убедиться в этом, проверив хэш SHA-1 первой фиксации в этих ветвях.

Если вы хотите переписать историю первого коммита, тогда вы можете сделать интерактивную перезагрузку. Вот пример того, как сделать это для part3 отрасли:

git rebase -i HEAD~3 

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

pick dkj398u third commit message 
pick l2mnx73 second commit message 
edit 36e74bn first commit message 

Заметьте, что я изменил действие на первая фиксация - edit. Когда вы сохраните этот файл и покинете редактор, Git запустит rebase, но остановится при первом фиксации. Это даст вам возможность внести необходимые изменения. После этого, вы можете совершить эти изменения и продолжить перебазироваться с помощью: Вы можете повторить эту процедуру для остальных ветвей

git rebase --continue 

. Обратите внимание, что если первая фиксация была последней для всех ветвей, то вы могли бы использовать git commit --amend для всех, чтобы изменить фиксацию с помощью переустановки.

-1

Вы можете использовать мерзавец перебазироваться, например, если вы хотите изменить обратно совершить baa643cd, запустите

$ git rebase --interactive baa643cd 

В редакторе по умолчанию, изменить «забрать» на «редактировать» в которую вы хотите изменить. Внесите необходимые изменения, а затем зафиксировать их с тем же сообщением вы были раньше:

$ git commit --all --amend --no-edit 

изменить фиксации, и после этого

$ git rebase --continue 

вернуться к предыдущей главы фиксации.

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