Пишем сообщения коммитов в git профессионально!

Перевод статьи «git commit -m is a lie! How to commit like a pro».

В самом начале изучения git вы узнали, что коммит делается с помощью команды git commit -m "ваше сообщение коммита". Для новичка это вполне подходит, но как только вы начнете работать в профессиональной среде, вы быстро поймете, что использования флага -m недостаточно. В этой статье я расскажу о различных способах фиксации изменений, а также о некоторых удобных трюках git.

От редакции Techrocks: также предлагаем почитать статью «Подпись коммитов в Git: как и зачем это делать». А если вы хотите получить хорошее представление о Git в целом, у нас есть обзорная статья «Практическое руководство по использованию Git».

Использование флага -m команды git commit

Флаг -m — это самый простой способ добавления сообщения к коммиту. Он подходит для небольших изменений, но не очень полезен для больших коммитов. Когда вы используете -m, вы ограничены одной строкой текста, что может затруднить объяснение того, что вы делаете. Например, исправляя ошибку, вы можете захотеть объяснить, что это за ошибка и как вы ее исправили. При использовании параметра -m ваше сообщение будет ограничено примерно до такого состояния:

git commit -m "Fixed bug"

Это не идеальный вариант, так как он дает мало сведений. Если вы хотите предоставить больше информации, вы можете использовать флаг -m несколько раз:

git commit -m "Fixed bug" -m "The bug was caused by a missing semicolon"

На случай, если вы не видели такого шаблона раньше: его можно представить как название и описание в разных строках.

git commit -m "Title" -m "Description"

Многострочные сообщения коммитов

Но еще лучше будет написать многострочное сообщение коммита. Это позволит вам не только указать название и приложить описание. Вы сможете написать более подробное объяснение того, почему вы внесли свои изменения, и предоставить любую другую важную информацию.

Самый простой способ сделать это — настроить ваш редактор так, чтобы он был редактором по умолчанию для git. Ниже я привел несколько примеров того, как это сделать для некоторых популярных редакторов:

# For VS Code
git config --global core.editor "code --wait"

# For Sublime Text
git config --global core.editor "subl -n -w"

# For Vim
git config --global core.editor "vim"

# For Emacs
git config --global core.editor "emacs"

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

Теперь предположим, что пришло время что-то зафиксировать. Поскольку вы настроили свой редактор как редактор по умолчанию для git, вы можете запустить команду commit без флага -m:

git commit

Это откроет ваш редактор, который для VS Code будет выглядеть примерно так:

Следует также отметить, что если вы работаете в команде, то, скорее всего, будете придерживаться соглашения о сообщениях коммитов. Это особенно вероятно, если ваша команда применяет какой-нибудь инструмент управления проектами, например Jira. По правилам, сообщение коммита должно начинаться с номера тикета Jira, за которым следует двоеточие, а затем название коммита. Это будет выглядеть примерно так:

Уже намного лучше! Как только вы закончите писать, сохраните и закройте файл, и ваши изменения будут зафиксированы.

Польза многострочных сообщений коммитов

Но зачем? Зачем делать коммиты именно так? Есть несколько причин:

  • Ясность. Написание многострочного сообщения коммита позволяет вам кратко и четко объяснить, что вы делаете. Это полезно при работе в команде, так как позволяет вашим товарищам быстро понять, почему вы внесли свои изменения. Это особенно актуально для код-ревью.
  • История. Когда вы пишете подробное сообщение коммита, вы создаете историю своих изменений. Это может быть полезно, если вам понадобится вернуться назад и посмотреть, почему вы внесли то или иное изменение.
  • Документация. Хорошее сообщение коммита может служить документацией для вашего кода. Если вам когда-нибудь понадобится вернуться назад и посмотреть, почему вы внесли то или иное изменение, вы сможете заглянуть в сообщение коммита, чтобы лучше понять, о чем вы думали в тот момент.

Алиасы

Еще один флаг команды commit, который вы, возможно, использовали, — -a. Этот флаг полезен лишь наполовину. Я так говорю потому, что при его использовании фиксируются только файлы, ранее добавленные в отслеживаемые. Если вы создали новый файл в рамках текущего коммита, то прежде чем использовать флаг -a, вам нужно будет сначала поместить этот файл в стейджинг. Для этого вам нужно будет использовать команду add.

Учитывая это, я создал для себя простой алиас (псевдоним) git, который будет добавлять все файлы в стейджинг, а затем запускать команду commit без каких-либо флагов. Что такое алиас, спросите вы? Алиас (или псевдоним) — это способ создать ярлык для команды или ряда команд.

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

git config --global -e

Теперь добавьте в файл следующий псевдоним:

[alias]
  ac = !git add . && git commit

Теперь, когда вы захотите закоммитить изменения, вы сможете выполнить следующую команду:

git ac

Я постоянно использую этот псевдоним, и он здорово экономит время. Вот некоторые другие алиасы git, которые я создал для себя и которые вам тоже могут пригодиться:

[alias]
  cg = !git config --global -e
  cpom = !git checkout main && git pull origin main
  mm = !git merge main
  ru = !git remote update
  dasm = !git branch | grep -v "main" | xargs git branch -D

Если вы не знаете, что делает последняя команда, то она удаляет все локальные ветки, кроме main. Это полезно, если вы работаете над проектом с большим количеством веток и, как и я, ленитесь и забываете удалять их после слияния с основной.

Я также создал очень простой репозиторий на GitHub, чтобы вы могли увидеть разницу в коммитах: https://github.com/andrews1022/commit-example/commits/main/

Надеюсь, эта статья была вам полезна! Сообщите мне, если у вас есть вопросы, или оставьте комментарий, если у вас есть другие советы и рекомендации по использованию git, которыми вы хотели бы поделиться.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх