2016-08-03 2 views
1

В моем репо у меня была ветвь мастера и ветка исправления. Я сделал мой bugfix и объединил его в master. Затем, в припадке безумия над глупой ошибкой, я сделал немыслимое. Я добавил 3 символа для смены после слияния с git commit --amend. Я переписал историю. Тогда, к моему ужасу, это затронуло только мастера, а не исправление, так что если я запустил (на master) git branch --no-merged, я вижу, что ошибка не объединена. Итак, я проверяю bugfix и делаю те же изменения, что git diff bugfix master ничего не возвращает, а затем от master я снова проверяю git branch --no-merged, и он по-прежнему говорит, что ошибка не объединена. Итак, теперь у меня есть две одинаковые ветки, которые я хотел бы объединить, а это не так, и я не хочу использовать другую фиксацию. Как я могу объединить их, так что git видит их как объединенные и git branch --no-merged не возвращает bugfix?«Объединить» две идентичные ветки

+2

Отменить фиксацию слияния, снова слиться и перейти оттуда. Я не думаю, что путь, на котором вы находитесь, принесет какие-либо плоды (по крайней мере, вы не хотите есть). –

+0

Даже после того, как вы внесете исправление, у фиксации все еще есть два родителя и является фиксацией слияния, поэтому не имеет смысла, что после этого ошибка появляется в -no-merged. – DavidN

+0

@DavidN Я не знаю, почему это случилось, я просто перечисляю то, что случилось со мной. Я попытаюсь воспроизвести его и сообщить, могу ли я это сделать. – thesecretmaster

ответ

1

Иногда, когда вы теряетесь на тропе, наиболее разумной задачей является повторение шагов к предыдущему пункту, когда вы не были потеряны. В вашем случае я бы отменил исправление слияния с изменением в master, а также nuke «зафиксировать» фиксацию в bugfix. Затем повторите слияние без каких-либо дополнительных изменений.

Отменить плохой фиксации в багфикс:

git checkout bugfix  # switch to bugfix 
git reset --hard HEAD~1 # nuke the fix commit 

Undo сливаться совершить в мастер:

git checkout master  # switch to master 
git reset --hard HEAD~1 # nuke the amended merge commit 

Теперь вы можете повторить слияние:

git merge bugfix 

Примечание: Этот ответ предполагает что вы еще ничего не сделали на пульте дистанционного управления. Если у вас есть, то вы захотите использовать git revert, чтобы отменить плохие коммиты, а не переписывать историю.

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