Разбор
Иногда при слиянии ветки в master нас не интересует вся история коммитов, накопившаяся во время разработки. Мы хотим объединить все изменения в одно коммит-сообщение. Для этого в Git есть флаг --squash.
Например: мы закончили работу над веткой, сделали в ней несколько коммитов и хотим смерджить её в master одним коммитом. Переходим в master, а затем используем --squash.
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 не была смерджена в мастер в привычном смысле. Был создан новый коммит, который включает в себя все изменения из ветки app-refactoring.