Как закоммитить многострочные сообщения в git commit

Источник: «How to Commit Multiline Messages in git commit»
Есть несколько способов закоммитить многострочные сообщения в git commit, всё зависит от личных предпочтений.

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

Commit Title: Briefly describe what I changed
Commit Description: Detailed instructions for changing it

Как это сделать?

1. Используя текстовый редактор

Используйте git commit без -m или git commit -v, что вызовет в текстовый редактор. После этого можно добавить несколько строк текста с помощью выбранного текстового редактора.

2. Несколько опций -m

Можно использовать несколько опций -m. Вот так:

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

Это связано с тем, что если указано несколько опций -m, их значения будут объединены в отдельные параграфы, эта информация есть в документации git commit.

-m <msg>
--message=<msg>
Использует указанное <msg> в качестве сообщения коммита. Если задано несколько опций -m, их значения объединяются в отдельные параграфы.

Следующий git log будет выглядеть так:

git log
commit 1e8ec2c4e820fbf8045b1c7af9f1f4f23262f755
Author: Your Name you@example.com
Date: Sat Sep 24 20:18:15 2022 -0700

Commit Title

Commit Description

3. Откройте кавычки, нажмите Enter

Другой более простой способ — набрать git commit -m " и нажать Enter, чтобы ввести многострочный текст, а при завершении закрыть кавычки ". Это выглядит так:

git commit -m "
> Commit Title
> Commit Description"

Следующий git log будет выглядеть так:

git log
commit 7d75a73e41b578a1e2130372a88a20ed1a0a81e4
Author: Your Name you@example.com
Date: Sat Sep 24 20:22:02 2022 -0700

Commit Title
Commit Description

4. Переменные среды шелл

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

msg="
> Commit Title
> Commit Description"

# или
msg="$(printf "Commit Title\nCommit Description")"

Затем:

git commit -m "$msg"

git log покажет:

git log
commit 056e35c37d199c0f3904e47d2107140267608c4a
Author: Your Name you@example.com
Date: Sat Sep 24 20:42:11 2022 -0700

Commit Title
Commit Description

5. Используя опцию -F

Введение из документации git commit:

-F <файл>
-файл=<файл>
Взять сообщение коммита из указанного файла. Используйте - для чтения сообщения из стандартного ввода.

Поэтому вы можете написать многострочное сообщение во временном файле перед коммитом. Например, так:

printf "Commit Title\nCommit Description" > "temp.txt"
git commit -F "temp.txt"

Или использовать стандартный ввод вместо временных файлов:

printf "Commit Title\nCommit Description" | git commit -F-

Заключение

Вот несколько способов, из тех, что я знаю, можете использовать любой из них в зависимости от своих предпочтений. Если у вас есть другие способы, не стесняйтесь поделиться ими.

Дополнительные материалы

Предыдущая Статья

Явное управление ресурсами в JavaScript: ключевое слово using

Следующая Статья

AbortController в JavaScript