git squash для rebase. Перебазирование с объединением коммитов. Сквош
Primary tabs
Еще есть squash для merge
Squash при rebase-е
У этого вариант:
- Плюс - не надо создавать никаких дополнительных веток (есть только ваша текущая и мастер, причем тут нам не важно в каком стоянии мастер, он тут нужен просто как точка отсчета не клонируем его, как в варианте с merge)
- В это варианте нам, не важно в каком стоянии теперь находится мастер, он тут нужен просто как точка отсчета и нам подойдет даже его устаревшее состояние. Мы не клонируем его, как в варианте с merge
- Минус - нужно будет немножко посмотреть на историю коммитов, также если вы уже вливали множество других коммитов из мастера, разобраться с тем что именно объединять будет не очень просто
Действуем так:
- Итак, мы находимся на своей текущей ветке, смотрим что там за изменения:
git log --oneline
например, видим:
05711cd (HEAD -> master) 4 ch c3ae0d8 3 ch ee85b99 2 ch d0f55f9 first ch 15122d2 init repo
-- тут 5 коммитов
- Давайте объединим последние три коммита в один, для этого укажем отступ от HEAD в команде ребейза с интерактивным режимом -i:
git rebase -i HEAD~3
--где ~3 как раз и указывает, на то что мы хотим в ребейзе как-то поработать с последними тремя коммитами
- После выполнения команды откроется текстовый редактор (в линуксе это часто nano), в котором ребез по умолчанию просто берет все (мы выбрали последние три) коммиты командой pick:
pick 2464840 2 ch pick 87deb8f 3 ch pick f966973 4 ch # Rebase d0f55f9..f966973 onto d0f55f9 (3 commands) #...........
-- фактически это текстовая инструкция для git-а как именно проводить rebase, далее мы исправим ее, в этих исправлениях и будет использован squash
- Объединим два последним коммита с первым из выбранных трех, пометим их с помощью s (можно и полно squash) в открытом текстовом редакторе:
pick 2464840 2 ch s 87deb8f 3 ch s f966973 4 ch # Rebase d0f55f9..f966973 onto d0f55f9 (3 commands) #...........
Сохраним файл.
- После сохранения файла в тестовом редакторе (часто это консоль) откроется редактирование сообщение коммита, ведь теперь наш коммит содержит больше изменений, и нам дают возможность прокомментировать это, изначально редактор будет выглядить как-то так:
# This is a combination of 3 commits. # This is the 1st commit message: 2 ch # This is the commit message #2: 3 ch # This is the commit message #3: 4 ch ..........
-- в дело пойдут только незакомментированные (без решеток) строки, отредактируем сообщение, например так:
# This is a combination of 3 commits. # This is the 1st commit message: 2 ch, 3 ch, 4 ch ..........
-- тут мы просто перенесли все на одну строчку, в вашем случае решайте как лучше. И сохраним "файл" сообщения коммита.
- Готово! Выбранные коммиты объединены, убедимся в этом, опять посмотрев историю:
git log --oneline
для примера выше увидим:
72b457e (HEAD -> master) 2 ch, 3 ch, 4 ch d0f55f9 first ch 15122d2 init repo
- Log in to post comments
- 796 reads