July 10, 2021

Избавляемся от мусорных коммитов с Git

Как не потерять временные наработки и при этом поддерживать историю коммитов в красивой форме? В этом вам поможет усвоение несложной информации и немного практики.

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

Он заключается в модификации предыдущего коммита путем добавления к нему новых изменений. Создадим файл commit_amend.py, содержащий одну строку и зафиксируем изменения с именем 'temp1', а затем проделаем аналогичные действия еще раз:

Если добавить еще строку и вместо фиксации набрать последовательность команд:

git add commit_amend.py
git commit --amend

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

Следует отметить, что в операционной системе Linux задать сообщение фиксации вам будет предложено в редакторе vi. Так как он крайне не удобен, советую запомнить следующее:

  • переход в режим ввода из командного осуществляется посредством ввода i (от слова insert);
  • сохранение сообщения фиксации после правки и выход из редактора (ESC) осуществляется командами wq.

Еще проще сделать то же сразу:

git commit --amend -m new_message

Открыв историю изменений файла, отмечаем, что коммит 'temp2' был перезаписан новым ('temp3'):

Если сравнить содержание файла commit_amend.py в двух последних коммитах, то можно убедиться, что для системы обе последние строки сохранены одновременно: