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