Это можно сделать, выполнив интерактивное перебазирование.
Если у вас есть филиал master
на совершение A
, а затем вы создали филиал my-branch
с совершающими B
, C
, D
, E
и F
. Вы хотите, чтобы сквош фиксировал B
, C
и D
в B'
.
Убедитесь, что текущая ветвь my-branch
и начать интерактивный перебазироваться:
git rebase -i master
Это откроет редактор со списком фиксаций, который будет действовать. Каждая строка представляет собой одно коммит, и первое слово в этой строке говорит, что команда выполняет эту фиксацию. Оставьте первый фиксатор (B
) как pick
и измените команды для следующих двух коммитов (C
и D
) на squash
. Сохраните и закройте редактор.
После мерзавца завершил обработку совершает B
, C
и D
, новый редактор будет открыт с коммита для новой фиксации B'
. Это будет содержать комбинацию сообщений фиксации от первоначальных коммитов, но вы можете изменить ее на все, что захотите. Как только сообщение фиксации будет тем, чем вы хотите, сохраните и закройте редактор.
После того, как мерзавец закончит обработку остальных фиксаций на ветке my-branch
, совершающий на my-branch
будет B'
, E
и F
.
Обратите внимание, что вы должны делать только переупаковку, если вы не подтолкнули свои фиксации. Rebasing изменит хэши ваших коммитов, что вызовет проблемы, если кто-то еще потянул оригинальные коммиты.
Ответ в точности такой же, как и в вопросе, который вы цитируете: –
Вы правы @ChrisMaes, не осознавали этого, спасибо – vaskort