Как объединить несколько коммитов в один git
Ответы
Roman Ashikov
08 июля 2022
Это делается с помощью интерактивного ребейза git rebase -i
. Давайте разберём пример. Мы хотим объединить три последних коммита в ветке в один коммит. Для этого выполняем команду:
git rebase -i HEAD~3
Откроется окно текстового редактора интерактивного ребейза:
pick bcdc461 fix something
pick 4133a5f the awesome commit
pick e0ca1b1 the last commit
# Rebase 44211de..e0cga8b onto 55012de
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
Тут нужно заменить pick на squash для двух последних коммитов. Список читается снизу вверх, таким образом последний коммит, это самый нижний коммит в списке.
pick bcdc461 fix something
squash 4133a5f the awesome commit
squash e0ca1b1 the last commit
# Rebase 44211de..e0cga8b onto 55012de
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
Сохраняем файл и в следующем открывшемся окне вводим комментарий для нового коммита. Аналогично сохраняем файл. Смотрим git log
и проверяем, что всё получилось.
2
0