【问题标题】:How to change default git commit message如何更改默认的 git 提交消息
【发布时间】:2016-04-23 18:06:11
【问题描述】:

我在 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
#    

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

【问题讨论】:

    标签: git commit


    【解决方案1】:

    您似乎将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. 退出编辑器后,进行提交或停止提交,具体取决于您是否提供了提交消息。

    如果您使用-f-m 选项,通常会跳过第2、3 和5 步(尽管您可以通过添加--edit 来强制git 打开您的编辑器)。大概你还没有使用过这些选项。

    --template 选项的作用(以及 commit.template 的作用)是提供git commit 将在步骤 2 中复制的文件的路径名。这不会影响在步骤 3 中添加的行。路径.git/hooks/prepare-commit-message (可能)一个文件 git 可以读取,它不是一个非常明智的模板名称,因为如果相同的路径是可执行的,该文件将变得可运行,并且步骤 4 可能行为不端。

    您可以通过添加--no-status 告诉git commit 不要执行第3 步。 (另外,作为一个有点奇怪的副作用,--no-edit,它明确禁止第 5 步,也禁止第 3 步。)

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

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

    【讨论】:

    • 哦,谢谢你的回答,但现在我不明白为什么第 4 步会有问题?你能解释一下吗?我还发现命令 -> > git config --global commit.status false 而且我可以看到这个命令从 git commit 这个模板中删除“请输入...”问题是这样做的好方法吗?另外,如何将这些更改(在配置文件上)推送到其他分支?或者我应该在主分支上更改它吗?
    • 在第 4 步,如果可以的话,git 会运行.git/hooks/prepare-commit-message 中的文件。如果你把普通文本放在这个文件中,如果 git 设法运行它会发生什么?至于commit.status,将其设置为false 会使--no-status 成为默认值,所以这是一种合理的做法。同时,您的配置(无论是--global 还是本地)在更改分支时都不是 git 更改的,所以那里没有问题。
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2014-11-27
    相关资源
    最近更新 更多