自定义 Git *Rebase* 提交消息模板

Posted

技术标签:

【中文标题】自定义 Git *Rebase* 提交消息模板【英文标题】:Custom Git *Rebase* Commit Message Template 【发布时间】:2018-01-08 15:12:41 【问题描述】:

所以,我知道如何为 git 设置自定义提交消息模板。

但是,当我进行交互式 rebase 并使用 reword 或 squash 时,我也希望能够为这些提交设置自定义消息模板。

到目前为止,我还没有找到如何做到这一点。

【问题讨论】:

reword 和 squash 操作总是从原始提交消息开始,所以它们并不真正“调用”模板。在旧的 rebase 代码(用 shell 脚本编写)中,您可以轻松破解它,但现在 rebase 正在用 C 重写,这更加困难。 torek 你知道将任何内容附加到模板底部的方法吗(所以在 # Please enter the commit message... 行之后)?我只需要在底部显示我们的提交样式指南。 我认为没有。如果您的 Git 较旧并且仍在使用 shell 脚本,请查看 $(git --exec-path)/git-rebase--interactive 并找到它构建 squash 消息以进行编辑的位置,然后对其进行修改。如果您的 Git 较新,请将源下载到 Git 并对其进行修改,然后构建并安装新的 Git。 Git 源代码保存在(还有什么?)Git 中,github.com/git/git 有一个只读存储库 【参考方案1】:

有几个选项,具体取决于您所追求的——当您执行交互式变基时,git 会向您抛出大量文本缓冲区。

自定义待办事项列表生成(a.k.a .git/rebase-$mode/todo-list)可以通过几个配置键来完成:

rebase.missingCommitsCheck 控制 git 在从待办事项列表中删除提交哈希时的报告行为。默认为ignore,但支持warnerror

rebase.abbreviateCommands 控制 git 是否更喜欢 rebase 操作的“速记语法”(例如,pf,而不是 pickfixup 等)。

rebase.instructionFormat 控制待办事项列表的生成。

如果您想在 rebase 启动时自定义提交消息本身,当您提出要求时(即在 rewordsquashfixup 操作上),那么您就是可能在git commit --verbose 或其配置变体之后,您可以使用全局设置

git config --global --bool commit.verbose true

作为“最后的手段”,也可以启用 .git/hooks/prepare-commit-msg 钩子并调整其行为,但恕我直言,它更挑剔?。

【讨论】:

以上是关于自定义 Git *Rebase* 提交消息模板的主要内容,如果未能解决你的问题,请参考以下文章

使用 `git rebase` 更改旧的提交消息

Git:如何在 rebase 后使提交消息中的 SHA 保持最新?

如何在GIT Rebase Interactive Squash之后删除远程存储库上的历史记录提交消息

Git rebase 更改作者? [复制]

如何在 git-rebase TODO 编辑器会话中查看更多日志行?

Git的自定义和特殊文件配置