Git rebase: объединение не последующих коммитов

теперь я знаю, что есть хороший способ объединить коммиты и изменить сообщение фиксации с помощью "git rebase --interactive"

имея следующую ситуацию:

$ git rebase --interactive HEAD^^^^
pick 5b7c140 commitA
pick 40ffd7c commitB
pick 5e7647d commitC
pick 78bea2d commitD

Rebase [...]

есть также возможность обрабатывать следующие требования:

объединение commitA и commitC и commitB и commitD для новых коммитов cAC и cBD?

1 ответов


возможно - вы также можете изменить порядок коммитов с интерактивной перебазирования:

pick 5b7c140 commitA
squash 5e7647d commitC
pick 40ffd7c commitB
squash 78bea2d commitD

или

pick 5b7c140 commitA
fixup 5e7647d commitC
pick 40ffd7c commitB
fixup 78bea2d commitD

разница между ними в том, что squash позволяет редактировать сообщение фиксации для новых фиксаций, тогда как fixup просто выбрасывает второе сообщение фиксации, оставляя предшествующее pick commit сообщение на месте для комбинированной фиксации. (Если ваш редактор запускается достаточно быстро, то имея привычку просто выбирать squash дает вам хорошую возможность просмотреть сообщение фиксации, даже если вы думаете, что вам, вероятно, не нужно будет использовать части сообщения fixup commit.)

существует возможность конфликта перебазирования, если ваш commitB и commitC изменить ту же часть файла. Часто они могут быть достаточно легко разобраться.