如何更改默认git提交消息

时间:2016-01-18 14:19:25

标签: git commit

我在prepare-commit-msg文件中添加了对提交消息的一些更改,然后我执行了这个命令

  

git config --global commit.template .git / hooks / prepare-commit-msg

之后,当我执行git commit时,我会收到类似这样的内容

  

我改变了40行然后

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.   
# Explicit paths specified without -i nor -o; assuming --only paths... 
# On branch master
# Changes to be committed:
#
#       modified:   test
#    

问题是否有机会在顶部显示此默认消息?或者更好地永久删除此消息?

1 个答案:

答案 0 :(得分:6)

您似乎将commit.template选项(--template选项的默认值与git commit)混合使用prepare-commit-message挂钩。

通常git commit使用以下操作序列:

  1. 运行预提交挂钩(如果存在且可运行)。如果它退出非零,则中止提交。
  2. 将任何指定或配置的模板(见下文)复制到临时文件中。如果没有模板或模板路径不可读,请从空的临时文件开始。
  3. 添加行# Please enter the commit message ...git status的输出。
  4. 在临时文件上运行prepare-commit-message挂钩(如果存在且可运行)。
  5. 在临时文件上打开编辑器。 (您的编辑器设置为$GIT_EDITORcore.editor配置,$VISUAL$EDITOR或内置默认值,以第一个设置为准。)
  6. 退出编辑器后,进行提交或停止提交,具体取决于您是否提供了提交消息。
  7. 如果您使用-f-m选项,则通常会跳过第2步,第3步和第5步(尽管您可以通过添加--edit强制git打开您的编辑器)。大概你没有使用过这些选项。

    --template选项的作用 - 以及commit.template的作用是提供git commit将在步骤2中复制的文件的路径名。这不会影响添加的行在步骤3中。当路径.git/hooks/prepare-commit-message (可能)文件git可以读取时,它对于您的模板来说不是一个非常合理的名称,因为如果相同的路径可执行,则该文件将成为可运行的,第4步可能会表现得很糟糕。

    您可以通过添加git commit告诉--no-status 而非执行第3步。 (另外,作为一个有点奇怪的副作用,--no-edit明确地抑制了第5步,也抑制了第3步。)

    或者,您可以使用第4步消除部分或全部git status输出和标准# Please enter...消息。 prepare-commit-message挂钩可以对模板文件进行任意更改。

    请注意,--cleanup=<mode>会影响最终提交消息中的内容,以及第6步的处理。有关详细信息,请参阅the git commit documentation