Webdevkin
Онлайн-курсы, статьи по веб-разработке и интернет-магазинам, уроки vue.js

Изучаем Git. Урок 16.
Как склеивать коммиты,
git rebase --interactive и git reflow

Урок, в котором мы узнаем, как склеивать коммиты, как и что можно сделать с помощью git rebase --interactive и как отменить переписывание истории коммитов

Видеоурок

Конспект урока

Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.

Зачем склеивать коммиты

Причины могут быть разные:
1. Несколько коммитов с мелкими правками багов
2. Правка замечаний на код-ревью
3. Соглашения в команде о мердже в мастер только одного коммита
4. Решение в процессе работы объединить логически связанные коммиты

Как склеивать коммиты, используя функционал git reset

Пример, нам нужно склеить 3 последних коммита. Можно сделать это так. Сначала сбрасываем 3 коммита без удаления его содержимого

А затем коммитим изменения с новым commit message

Что такое git rebase в интерактивном режиме

Это мощный инструмент редактирования истории коммитов. Он позволяет не только склеивать (сквошить) коммиты, но переименовывать их, редактировать содержимое коммитов и удалять коммиты.

Как запустить git rebase

Числом указываем количество коммитом, которое хотим затронуть. Дальше открывается текстовый редактор, где у коммитов нужно проставить нужные опции

Самые популярные опции редактирования коммитов

p, pick - означает использовать коммит или оставить его, то есть не трогать

r, reword - переименовать коммит

e, edit - редактировать коммит. Здесь имеется в виду редактирование содержимого коммита

s, squash - сквош или склеивание коммитов

f, fixup - это то же самое, что и сквош, только с той разницей, что гит не будет предлагать самим написать commit message, а возьмет его из того коммита, к которому приклеиваются остальные

d, drop - удалить коммит

git reflog

Что делать, если мы провели ошибочные операции git rebase -i и теперь хотим все отменить?

Все операции переписывания коммитов git заносит в отдельный журнал, который можно посмотреть с помощью git reflog

Пример журнала git reflog

Отмена операций ребейза

С помощью git reflog нужно найти хэш коммита до ошибочной операции git rebase -i. В примере выше такой может быть строка (подробности в видео)

Чтобы откатить историю коммитов к этому состоянию, нужно выполнить git reset --hard с указанием нужного хэша, то есть

Совет от автора

Используйте инструмент git reflow только в крайних случаях. В журнале reflow легко ошибиться и выбрать не тот хэш

Возможно, лучше вместо редактирования коммита стоит докинуть нужные правки поверх, а вместо удаления коммита сделать git revert

Спасибо за внимание и до встречи!

Все уроки курса

* платные уроки

список обновляется...