Git: как объединить все коммиты в один

Чтобы объединить все предыдущие коммиты в один (например, чтобы удалить всю историю), можно воспользоваться командой:
git rebase --root -i
После этого список всех коммитов откроется в текстовом редакторе, и напротив каждого из них, кроме первого, нужно будет заменить слово "pick" на "squash". Тогда все предыдущие коммиты будут включены в тот, который находится на первом месте в списке. Затем его можно отредактировать:
git commit --amend --author "Name <e-mail>" --date="$(date -R)" 
Но можно сделать это быстрее с помощью команды:
git reset $(git commit-tree HEAD^{tree} -m "commit message")
которая создаст новый коммит на основе всего существующего дерева.
В обоих случаях при публикации изменений необходимо добавлять опцию "-f":
git push -f

1 комментарий :

  1. Еще есть интерактивный способ менять commit messages https://help.github.com/articles/changing-a-commit-message/

    ОтветитьУдалить