Подтвердить что ты не робот

Подготовка сообщения git commit перед фиксацией?

Можно ли подготовить сообщение коммита до коммита, а это означает, что я буду печатать свое сообщение коммита перед фактическим коммитом или во время рабочего каталога, чтобы я знал, над чем работаю, и знаю, что это за ветка или коммит. около. Когда я говорю "до", я не имею в виду просто пару секунд, прежде чем ввести коммит в командной строке. Я буквально имею в виду сразу после коммита или в начале ветки, чтобы следующий коммит автоматически наследовал сообщение в очереди или что бы это ни называлось.

Естественно, я могу поместить эти сообщения во время коммита, для меня есть разница. И я вижу, что аргумент в пользу git не предназначен для этого. Мне просто интересно об этом.

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

4b9b3361

Ответ 1

Git может принимать сообщение фиксации из файла с помощью флагов -F или --file:

git commit -F message.txt

Вы можете подготовить свое сообщение заранее в текстовом файле и использовать этот файл при фиксации.

Если вы часто это делаете, имеет смысл создать для него псевдоним, например:

done = commit -F message.txt

Чтобы вы могли просто набрать git done, чтобы он всегда использовал ваш текстовый файл.

Если вы допустили ошибку и совершили слишком быстро, не обновляя файл сообщения, не проблема, вы можете просто сделать git commit --amend и исправить сообщение в коммите.

UPDATE

Флаг -e также полезен, так как он позволяет редактировать сообщение перед фиксацией:

git commit -eF message.txt

Ответ 2

Если с помощью параметра --file для git commit вы можете передать сообщение через стандартный ввод с помощью тире (-) вместо имени файла.

echo "Classy commit message" | git commit --file -

Ответ 3

Если вы используете VIM в качестве главного редактора Git, тогда при запуске git commit, VIM будет открыт, и вам будет представлен буфер, содержащий выведенный комментарий команды git status.

Затем вы можете использовать команду VIM :read COMMIT_MSG.txt, которая вставляет содержимое файла COMMIT_MSG.txt (ваше предварительно подготовленное сообщение фиксации) в текущее местоположение курсора.

Это действительно просто альтернатива запуску git commit -eF COMMIT_MSG.txt, но мне лично легче запомнить команду VIM :read, а не запоминать еще один аргумент командной строки Git. Личные предпочтения, действительно.

Ответ 4

Я объединил ответы LopSae и janos, чтобы автоматически удалить все строки, начинающиеся С#, из входного текстового файла с командой из этого поста.

Результат этой команды

cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F -

И чтобы сделать его короче, я предлагаю добавить псевдоним.

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

[alias]
  commitmsg  = "!f() { myarg=${@}; cat .git/COMMIT_EDITMSG | sed '/^#/ d' | git commit -F - $myarg;  }; f"

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

commitmsg --date "2001-01-02 18:00:00"

Ответ 5

Вы также можете получить форматирование git vim (исключая строки комментариев, в которых обычно перечислены включенные/исключенные изменения) с помощью этой команды:

vi -c 'set syntax=gitcommit'

Я создал псевдоним (не git) и добавил его в свой ~/.bashrc.

alias ecm="vi -c 'set syntax=gitcommit'"

Повторно отправьте ваш .bashrc, чтобы включить его для текущего сеанса.

source ~/.bashrc

А потом используй его.

ecm message.txt

Все это было сделано с помощью Git Bash на Windows.