Как закоммитить многострочные сообщения в 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-
Заключение
Вот несколько способов, из тех, что я знаю, можете использовать любой из них в зависимости от своих предпочтений. Если у вас есть другие способы, не стесняйтесь поделиться ими.