在 git 中强制提交消息格式
Posted
技术标签:
【中文标题】在 git 中强制提交消息格式【英文标题】:Enforce commit message format in git 【发布时间】:2016-10-09 03:26:27 【问题描述】:如何在 Git 中强制执行提交消息格式?
这可以在存储库级别设置,以便创建分支的每个人都可以执行此操作吗?
【问题讨论】:
能否请您在上一个问题 (***.com/q/37671334/6309) 中告诉我们您认为哪个答案更好? (***.com/help/accepted-answer) 如果你想检查你是否落后,如果你落后,那么做一个 git fetch,你还没有接受正确的答案。 【参考方案1】:服务器端 Git 挂钩是您的解决方案,但也存在设置和维护挂钩(通常还有服务器)的开销。
如果您正在寻找 SaaS 解决方案(用于服务器端 Git 挂钩)- 这正是 Datree* 可以为您做的。
*免责声明:我是 @Datree 的联合创始人和产品负责人,但作为一名积极的开源贡献者,我深谙此道。 我也写了一篇关于这个问题的博文——How to Get More Out of Your Git Commit Message
【讨论】:
【参考方案2】:如 Git ProBook "Customizing Git - An Example Git-Enforced Policy" 中所述,这种强制执行将通过 hook 设置,更具体地说,是像 @987654323 这样的 服务器端 挂钩@一:
所有服务器端工作都将进入您的 hooks 目录中的
被推送到的引用的名称 该分支所在的旧版本 正在推送的新版本update
文件。update
钩子在每个被推送的分支上运行一次,并接受三个参数:
这比客户端钩子(如pre-commit
之一)更受欢迎,它:
对于给定的 repo,如果您的策略未得到遵守,服务器端挂钩将通过拒绝 git push 来强制执行您想要的任何规则。
这假设您可以控制用户推送到的远程存储库托管服务器。
如果你不这样做,你会回到客户端预提交钩子,可以通过 git 模板设置,whose template directory can be shared amongst all users (starting with git 2.9, June 2016)。
【讨论】:
以上是关于在 git 中强制提交消息格式的主要内容,如果未能解决你的问题,请参考以下文章
如何在GIT Rebase Interactive Squash之后删除远程存储库上的历史记录提交消息