Часто, когда мы заканчиваем работу над своей веткой, нам нужно сделать merge с основной веткой (в данном примере это master) единым коммитом. Если нас не интересуют все коммит сообщения которые создавались во время разработки. Так как они уже неактуальны, и сейчас мы хотим объединить все изменения в одно коммит сообщение, то в git есть хорошая функция - autosquash, которая позволит это сделать.
Например: мы закончили работу над своей веткой, сделали в ней несколько различных коммитов и хотим объединить ветку в master. Нам всё равно на все коммит сообщения, так как мы хотим объединить их в один коммит. Для начала перейдем в ветку master, а затем используем autosquash.
git checkout masterМы делаем git merge --squash ветки app-refactoring в мастер:
git merge --squash app-refactoringЕсли мы сразу выполним git log, то ничего не увидим.
* 38e8211 - (app-refactoring) add app footer (1 hour ago) <Oleksii Myzgin>
* d13b462 - update README (1 hour ago) <Oleksii Myzgin>
* 74708e6 - add title (1 hour ago) <Oleksii Myzgin>
* a4a7ec9 - (HEAD -> master, origin/master) add into section (1 hour ago) <Oleksii Myzgin>Сначала нам нужно сделать git commit
Squashed commit of the following:
commit 38e821152b9eee9943dba75e1c2ca1e88c91af9a
Author: Oleksii Myzgin <oleksii.myzgin@email.com>
Date:
add app footer
commit d13b462ea304c95a23fb8a23d9107c398d04344f
Author: Oleksii Myzgin <oleksii.myzgin@email.com>
Date:
update README
commit 74708e65040e05e485f79883bc1cae7f152b5492
Author: Oleksii Myzgin <oleksii.myzgin@email.com>
Date:
add title
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
# modified: README.md
# modified: src/App.jsТеперь мы видим сжатый коммит для всех сообщений коммита. В самом вверху можем определить желаемое сообщение этого коммита - add app-refactoring. После того, как мы сохраним изменение и выполним git log - увидим новый коммит add app-refactoring, который содержит все коммиты нашей ветки app-refactoring.
* 6111633 - (HEAD -> master) add app-refactoring (7 minutes ago) <Oleksii Myzgin>
| * 38e8211 - (app-refactoring) add app footer (1 hour ago) <Oleksii Myzgin>
| * d13b462 - update README (1 hour ago) <Oleksii Myzgin>
| * 74708e6 - add title (1 hour ago) <Oleksii Myzgin>
|/
* a4a7ec9 - (origin/master) add into section (1 hour ago) <Oleksii Myzgin>Как можно увидеть, ветка app-refactoring не была объединена merge в мастер. Было создано новое сообщение коммита, которое является суммой всех коммитов, которые мы создали в ветке app-refactoring.