自定义 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
,但支持warn
和error
。
rebase.abbreviateCommands 控制 git 是否更喜欢 rebase 操作的“速记语法”(例如,p
、f
,而不是 pick
、fixup
等)。
rebase.instructionFormat 控制待办事项列表的生成。
如果您想在 rebase 启动时自定义提交消息本身,当您提出要求时(即在 reword
、squash
或 fixup
操作上),那么您就是可能在git commit --verbose 或其配置变体之后,您可以使用全局设置
git config --global --bool commit.verbose true
作为“最后的手段”,也可以启用 .git/hooks/prepare-commit-msg 钩子并调整其行为,但恕我直言,它更挑剔?。
【讨论】:
以上是关于自定义 Git *Rebase* 提交消息模板的主要内容,如果未能解决你的问题,请参考以下文章
Git:如何在 rebase 后使提交消息中的 SHA 保持最新?
如何在GIT Rebase Interactive Squash之后删除远程存储库上的历史记录提交消息