【问题标题】:How do I add project-specific information to the Git commit comment?如何将项目特定信息添加到 Git 提交评论?
【发布时间】:2010-07-07 13:44:07
【问题描述】:

使用 Git,如果您正在提交,它会在提交消息下包含一个被注释掉的部分。这包含有关编写提交消息的说明以及正在更改的文件列表。像这样:

# 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:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:  important-file.txt 
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   some-other-thing.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       untracked.txt

是否可以在此文件中添加更多材料?对于那些使用TracRedmine 等问题跟踪软件的人来说,一个明显的用例是指定额外的句法元素。例如,Redmine 用户可以包含问题编号和一些特殊关键字来将问题标记为已解决:关键字是“refs”(和“references”)和“fixes”(或“closes”)——但我经常觉得很难记住关键字。

如果可以在提交说明的底部附加一些特定于项目的文本,那将很方便。

是否有任何现有的方法可以做到这一点,或者我需要破解一个吗?作为一个附带问题,是否有任何其他 VCS(如 Mercurial)有类似的行为?

【问题讨论】:

  • 请注意,即使您这样做,也不是所有用户都会看到它。例如,我经常从 SourceTree 提交,它不会打开编辑器,因此从不显示提交消息模板。

标签: git version-control


【解决方案1】:

我使用了 commit.template(如 here 所述)。我本可以使用 prepare-commit-msg 挂钩,但提交模板的工作稍微容易一些,而且我可以将提交模板保留在项目的版本控制中。

【讨论】:

    【解决方案2】:

    选项 1:

    正如其他人所提到的,使用 Git 执行此操作的直接方法是 prepare-commit-message 挂钩。

    但是,必须考虑该策略的一些问题。来自 Pro Git 的第 7.4 章:

    [客户端钩子脚本]不是 用一个克隆转移 项目,您必须分发这些 以其他方式编写脚本,然后拥有 您的用户将它们复制到他们的 .git/hooks 目录并制作它们 可执行。你可以分发这些 项目或项目中的挂钩 单独的项目,但没有办法 自动设置它们。

    选项 2:

    Tom Morris 所述,请使用commit template

    选项 3:

    您可以自定义构建 Git,其中包含您的附加说明。当前提交消息中包含的指令在 Git 源代码中进行了硬编码。参见$GIT_SRC/builtin/commit.c,从line 655开始。

    这种方法可能不是首选,因为每次发布新版本的 Git 时都必须应用补丁。

    选项 4:

    为 Git 创建一个补丁,添加此功能并将其提交到邮件列表。如果您(或其他人)决定尝试此操作,我会首先从列表中征求有关如何进行的建议。


    水银:

    Mercurial 中的挂钩脚本的行为方式类似。来自 Mercurial 的 Chapter 10:权威指南:

    在 Mercurial 中,钩子不是修订 控制,并且不传播时 您克隆或从存储库中提取。 原因很简单:一个钩子 是完全任意的一块 可执行代码。它运行在你的 用户身份,具有您的权限 级别,在你的机器上。

    这对任何人来说都是极其鲁莽的 分布式修订控制系统 实现版本控制的钩子, 因为这将提供一个容易 可利用的方式来颠覆 修订用户的帐户 控制系统。

    【讨论】:

    • 第一个链接失效
    • 修复了死链接
    【解决方案3】:

    您可以通过 prepare-commit-message hook 调整提交消息。

    【讨论】:

      【解决方案4】:

      我很确定您可以为此使用 prepare-commit-msg 挂钩。请查看githooks 了解更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        • 2021-04-02
        • 1970-01-01
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多