Иногда git включает в себя сообщение diff для фиксации при использовании verbose

341
Ivan Dokov

Я использую git версии 2.16.2 в MacOS Mojave (но я видел это и в других версиях), и я наблюдаю странное поведение git commit -v.

Иногда, когда я пишу свое сообщение коммита и закрываю редактор (в моем случае nano), сообщение коммита изменяется, и в сообщение добавляется дифференцированный коммит.

Например:

commit c7f28bc4849318a542fe6312444f3a72d82787f0 Author: Ivan Dokov <***@gmail.com> Date: Tue Oct 16 16:33:49 2018 +0300  Firm Notes deletion  diff --git a/src/app/pages/firm/firm-notes/firm-notes.component.html b/src/app/pages/firm/firm-notes/firm-notes.component.html index 2267393..f0cfed4 100644 --- a/src/app/pages/firm/firm-notes/firm-notes.component.html +++ b/src/app/pages/firm/firm-notes/firm-notes.component.html @@ -14,17 +14,38 @@ ... 

Я думаю, что это происходит, когда я не оставляю пустую строку раньше:

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. 

Такое поведение не соответствует. Обычно я не оставляю пустую строку, и она работает как надо, но когда я на самом деле вижу сообщение о плохом коммите, я исправляю коммит и добавляю пустую строку, и проблема решается. Проблема в том, что я не всегда слежу за сообщением о коммите после выполнения коммита и отправляю такие плохие сообщения о коммите в репозиторий.

К сожалению, я единственный, кто пользуется git commit -vв офисе, и никто другой не наблюдает за такой проблемой.

Вот мой гитконфиг .

Google также не помогает, так как я не могу найти сообщения с похожими проблемами.

Обновление: я только что узнал, что добавление пустой строки после сообщения о коммите не всегда решает проблему.

0

1 ответ на вопрос

0
A.H.

Когда я git commit -vполучаю это сообщение по умолчанию:

# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Changes to be committed: # modified: foo.txt # # ------------------------ >8 ------------------------ # Do not modify or remove the line above. # Everything below it will be ignored. diff --git a/foo.txt b/foo.txt index 88545b8..9fcffaf 100644 

Для вашего случая эту часть не следует изменять:

# ------------------------ >8 ------------------------ # Do not modify or remove the line above. # Everything below it will be ignored. 

Когда вы не видите эти строки, вы можете настроить git commitстранным образом. В этом случае проверьте с этой командой и проконсультируйтесь git help configи git help commit:

git config -l |grep "^commit\." 
Я вижу линии и, конечно, я не изменяю их. Все, что я делаю, - это пишу сообщение коммита вверху, где находится мой курсор, и сохраняю файл, но содержимое diff коммита добавляется к сообщению коммита, когда я не оставляю пустую строку после своего сообщения. Ivan Dokov 6 лет назад 0
Магические линии кажутся довольно «разумными» - даже добавление пробела запускает поведение, которое вы наблюдаете. Так что, возможно, в ВАШЕМ случае это изменение стиля EOL (LF против CR + LF). A.H. 6 лет назад 0
Вероятно, это действительно так. Как вы думаете, это связано с nano, терминалом (iTerm2) или чем-то еще из macOS и какими-либо подсказками, как отлаживать и изменять поведение? Ivan Dokov 6 лет назад 0
Я только что узнал, что добавление пустой строки после моего сообщения о коммите не всегда решает проблему. Ivan Dokov 6 лет назад 0
Сообщение фиксации обычно хранится в `.git / COMMIT_EDITMSG`. Вы можете сравнить hexdumps до и после ** сохранения ** сообщения, но ** перед ** выходом из редактора. Вы можете даже автоматизировать это, обернув редактор скриптом оболочки, который выполняет эту работу A.H. 6 лет назад 0

Похожие вопросы