我有一个~/.commitmessage
文件,如下所示:
# If applied, this commit will...
我已经运行了git config --global commit.template ~/.commitmessage
,所以现在如果我运行git commit
,它会使用此缓冲区触发vim
:
#
# If applied, this commit will...
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
这很棒,但如果我运行git commit --amend
,我会得到标准的提交模板:
My previous commit message
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Thu Feb 8 08:55:13 2018 -0300
#
# On branch master
#
# Initial commit
#
# No changes
如何在修改时显示commit.template
我希望看到我以前的提交消息加上我的模板 - 类似的东西:
My previous commit message
#
# If applied, this commit will...
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Thu Feb 8 08:55:13 2018 -0300
#
# On branch master
#
# Initial commit
#
# No changes
答案 0 :(得分:2)
man git-config说,这是预期的行为:
commit.template
指定要用作新提交消息模板的文件的路径名。
查看实现确认它(文件builtin/commit.c
,函数prepare_to_commit
,只有在template_file
处理没有发生时才会对变量use_message
采取行动。
话虽如此 - 我认为扩展这种行为可能是合理的,我敢打赌Git维护者不会反对。我的第一种方法是添加新的配置选项commit.statustemplate
,它与commit.template
的工作方式几乎相同,只是将新的(已注释掉的)消息添加到新旧消息中。
答案 1 :(得分:1)
一种方法是"撤消"使用git reset HEAD~1
的最新提交,然后再次提交常规git commit
。这将使用模板,因为它是一个新提交 - 您的旧提交消息将不会出现在编辑器中。