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
изменить ту же часть файла. Часто они могут быть достаточно легко разобраться.