Напишите хорошее сообщение коммита

GitHub

Сегодня поговорим о том, как написать хорошее коммит-сообщение.

Сообщение о фиксации Вы должны писать каждый день, каждый раз, когда вы используете Git для фиксации кода, мы будем выполнятьgit commitКоманда сопровождается предложением, кратко описывающим изменения в этом коммите.

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

Итак, какое сообщение фиксации является хорошим сообщением фиксации?

Сообщество открытого исходного кода подытожило для нас наборConventional Commitsнаписание спецификации. Эта спецификация используется многими популярными проектами с открытым исходным кодом, такими какKarma,AngularЖдать. Его предписанный формат выглядит следующим образом:

<type>[optional scope]: <description>

[optional body]

[optional footer]

Рассмотрим каждый из этих компонентов отдельно:

type: используется для обозначения типа изменения, которое мы представили на этот раз, это новая функция? Или изменил тестовый код? Или документация обновлена? Сообщество открытого исходного кода в настоящее время объединяет следующие 11 типов:

  • build: Основная цель — изменить отправку системы сборки проекта (например, glup, webpack, конфигурация свертывания и т. д.)
  • ci: Основная цель — изменить коммиты, в которых проект продолжает процесс интеграции (например, Travis, Jenkins, GitLab CI, Circle и т. д.)
  • документы: обновления документации
  • подвиг: новые возможности
  • исправить: исправление ошибки
  • perf: оптимизация производительности
  • Refastor: Refactor Code (ни новые функции, ни исправления ошибок)
  • стиль: модификации кода, не влияющие на логику программы (изменить символы пробела, дополнить отсутствующие точки с запятой и т. д.)
  • тест: добавьте тестовый пример или обновите существующий тест
  • revert: откатить предыдущую фиксацию
  • рутинная работа: другие виды, не относящиеся к вышеперечисленным видам

optional scope: необязательный диапазон модификации. Используется для определения того, какой модуль в коде в основном затрагивает этот коммит. Его можно заполнить по фактической ситуации проекта, лучше всего указать список модулей в проекте для соблюдения согласованности.

description: Опишите основное содержание этого представления в одном предложении и будьте краткими.

optional bodyа такжеoptional footerОбычно мы его не используем, поэтому я не буду вдаваться в подробности.

Теперь, когда мы представили формат, давайте посмотрим, как выглядит сообщение фиксации, соответствующее этой спецификации, в реальном мире.

Возьмите Angular в качестве примера и взгляните на его последнюю историю коммитов:

Это аккуратно?

Теперь спецификация есть, но нам по-прежнему нужен инструмент для автоматического определения того, действительно ли сообщение фиксации, которое мы пишем, соответствует спецификации. Это как если бы мы создали набор спецификаций синтаксиса JavaScript, и нам нужна такая функция, как ESLint, чтобы автоматически проверять это для нас.

Для сообщений фиксации этот инструментcommitlint.

Включить коммит в проекте

Как и ESLint, сам commitlint обеспечивает только обнаружение и некоторые основные правила. Пользователи должны настроить свои собственные спецификации в соответствии с этими правилами.

Что касается спецификации Conventional Commits, сообщество разобралось.@commitlint/config-conventionalpackage, нам просто нужно установить и включить его.

Сначала установите commitlint и обычную спецификацию:

npm install --save-dev @commitlint/cli @commitlint/config-conventional

Затем создайтеcommitlint.config.jsФайл и напишите следующее:

module.exports = {
  extends: ['@commitlint/config-conventional'],
};

На этом настройка commitlint в основном завершена. Но на данный момент мы не сказали, когда выполнять commitlint.

Ответ очевиден, в каждом исполненииgit commitпора~

Чтобы выполнить commitlint для проверки сообщения, которое мы ввели каждый раз, когда мы делаем коммит, нам также нужно использовать инструмент —husky.

husky — это усовершенствованный инструмент git hook. может выполняться на разных этапах git-хукаpackage.jsonНастроенный скрипт npm.

Сначала установите хаски:

npm install --save-dev husky

затем вpackage.jsonСредняя конфигурацияcommitmsgсценарий:

{
  "scripts": {
    "commitmsg": "commitlint -E GIT_PARAMS"
  }
}

На этом полная конфигурация завершена.

Давайте почувствуем это:

чего же ты ждешь? Спешите включить commitlint в свой проект!