Git не предоставляет автоматический способ сдавить коммиты во время перебазировки, как вы, вероятно, думаете.Тем не менее, git rebase
предоставляет интерактивную перебазировку, которая имеет возможность сдавливать коммиты.Обычно, интерактивные ребазы, ну, в общем, интерактивные, и они порождают редактора.Тем не менее, вы можете указать команду оболочки в переменной окружения GIT_SEQUENCE_EDITOR
, и она будет использоваться для редактирования этих коммитов.
Итак, чтобы сделать то, что вы хотите сделать более автоматизированным способом, вы могли бызапустите GIT_SEQUENCE_EDITOR="sed -i -e '2,\$s/^pick/squash/'" git rebase -i master
, который изменит список задач, чтобы объединить все коммиты вместе.Затем Git предложит вам объединить сообщения коммита в одно.
Если вы ищете совершенно неинтерактивную ситуацию, вы можете изменить squash
в приведенной выше команде на fixup
, и этооставьте только первое сообщение коммита, отбрасывая остальные.
Обратите внимание, что в macOS вам может потребоваться изменить sed -i
на sed -i ''
, поскольку его sed работает немного по-другому.