Git обрабатывает строки, начинающиеся с #
комментариев, при фиксации. это очень раздражает, когда вы работаете с системой отслеживания билетов и пытаетесь записать номер билета в начале строки, например
#123 salt hashed passwords
git просто удалит строку из сообщения коммита. есть ли способ избежать хеша? я попробовал \
и !
, но ничего не работает. До этого пробелы #
сохраняются, поэтому они также не являются рабочим решением проблемы.
git config core.commentchar
можно настроить этот символ комментария. Смотрите мой ответ нижеgit commit --cleanup=scissors
будет более гибким. Смотрите подробности в моем ответеОтветы:
Это поведение является частью
git commit
стандартного поведения очистки. Если вы хотите сохранить строки, начинающиеся с,#
вы можете использовать альтернативный режим очистки.Например
Если вы делаете это, вы должны быть осторожны, чтобы удалить все
#
строки, которые вы не хотите отображать в коммите.источник
commit.template
переменной конфигурации git.git commit --amend --cleanup=whitespace
Обратите внимание, что начиная с git1.8.2 (февраль 2013 г.) , вы можете использовать символ, отличающийся от '
#
' для закомментированной строки в сообщении фиксации.Это позволяет вам использовать '
#
' для ссылки на номер ошибки.Теоретически вы можете поместить
core.commentChar
слово (несколько символов), но git 2.0.x / 2.1 будет более строгим (3 квартал 2014 года).См совершать 50b54fd по Nguyễn THAI Нгок Duy (
pclouds
) :config: быть строгим на core.commentChar
git 2.0.x / 2.1 (3 квартал 2014 г.) добавит автоматический выбор для
core.commentChar
:См. commit 84c9dc2
Список символов-кандидатов для «авто»:
Это означает, что команда like
git commit -m '#1 fixed issue'
автоматически переключит commentChar на ';
', потому что '#
' использовалось в сообщении фиксации.источник
$ git config --global core.commentchar ';'
git config --global core.commentChar auto
Ответы здесь хорошие и подробные, но для такого мерзавца, как я, настройка параметров git config не так очевидна. Вот пример , чтобы перейти от
#
к;
для комментариев символов:Это все, что вам нужно сделать.
источник
git commit
чтобы открыть сконфигурированный редактор для редактирования сообщения фиксации!git -c core.commentChar="|" commit --amend
(замените|
на что хотите).Вы можете использовать параметр командной строки
-m
:источник
Если вы выполняете интерактивную перебазировку, то, когда вы сохраняете свое сообщение о коммите, в котором ничего нет (потому что
#
в начале это был комментарий, а потому его игнорировали), git покажет вам, что делать:Итак, просто измените сообщение:
и продолжаем ребаз:
источник
git commit --cleanup=scissors
должен быть использован. Добавлен в Git v2.0.0 2014.05.21из
git commit --help
источник
commit.cleanup = whitespace
и удалять# …
комментарии вручную, как уже предлагал @CharlesBailey.scissors
-режим просто дополнительно очищает синтаксис ножниц, используемыйgit
format-patch
/mailinfo
/am
; он не использует…-- >8 --…
синтаксис при добавлении комментариев для фиксации сообщений .# ...
комментарии по-усердно». 2. Я не очень уверен насчет второй части вашего комментария,scissors
режим определенно вgit commit --help
. Какую версиюgit
вы используете? @ SlippD.Thompsonwhitespace
Режим предлагает удаление 1. начальных и конечных пустых строк, 2. конечных пробелов, 3. свертывание последовательных пустых строк.scissors
предлагает удаление 1. ведущих и конечных пустых строк, 2. конечных пробелов, 3. свертывание последовательных пустых строк, 4. всего, начиная с (и включая) строки# -…- >8 -…-
. Однако линии ножниц (# -…- >8 -…-
) вставляются только при использованииgit-format-patch
/mailinfo
/am
. Поэтому для нормальногоgit-commit
/merge
/rebase
/cherry-pick
рабочего процессаscissors
режим зачистки дает ноль преимуществ по сравнению сwhitespace
режимом. v2.11.0git commit --cleanup=scissors
DOES предварять# ------------------------ >8 ------------------------
строку передgit status
информацией. Как показано ниже: `# ------------------------> 8 ------------------- ----- # Не трогайте строку выше. # Все ниже будет удалено. # На ветке master # # Первоначальная фиксация # # Изменения, которые будут приняты: # новый файл: .gitignore `# ------------------------ >8 ------------------------
перед статусом txt «Похоже, вы можете быть…» _ при использованииscissors
; однако, он вставляет строку ножницы после в# Conflicts: …
тексте. Яcommit.status = false
установил в своем.gitconfig
, так что я не видел текст статуса, только текст конфликта. Я исправлен; меняется на upvote.Используйте другой префикс для номера билета. Или добавьте слово к номеру билета, например, «Ошибка № 42». Или добавьте один пробел к строке; если вы хотите удалить этот пробел, вы можете добавить коммит-хук для этого.
Лично я предпочел бы, чтобы манипуляция сообщениями коммита не выполнялась с помощью хука, потому что это может быть очень раздражающим, когда оно срабатывает, когда вы этого не хотите. Возможно, самое простое решение - переосмыслить проблему.
источник
#xxx
происходит в любом месте сообщения коммита, будет ссылаться на проблему. Это не обязательно должно быть в начале коммита. Может быть, это то, что изменилось за последние пять лет?Все мои коммиты начинаются с
#issueNumber
того, что я положил этот шаблон к своемуvim .git/hooks/commit-msg
:Итак, давайте предположим, что у нас есть ветвь,
#15
и мы делаем сообщение коммитаadd new awesome feature
. При таком подходе окончательное сообщение коммита будет#15 add new awesome feature
.источник