Перевод статьи «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, которыми вы хотели бы поделиться.