在git中强制要求提交信息格式

38

我该如何在Git中强制规定提交信息的格式?

这个规则能否在仓库级别设置,以便每个创建分支的人都必须遵守该规则?


请问您能否告诉我们,在您之前的问题(http://stackoverflow.com/q/37671334/6309)中,哪个答案是您认为更好的答案?(http://stackoverflow.com/help/accepted-answer) - VonC
如果您想检查是否落后,如果是的话,则执行git fetch操作,那么您还没有接受正确的答案。 - VonC
2个回答

11
如Git ProBook中所述 "Customizing Git - An Example Git-Enforced Policy", 这种强制执行将通过一个钩子来设置,更具体地说,是一个服务器端钩子,比如update

所有服务器端的工作都将放在您的钩子目录中的update文件中。 update钩子每推送一个分支就运行一次,并带有三个参数:

  • 正在推送的引用名称
  • 该分支所在的旧版本
  • 正在推送的新版本

这比客户端钩子(例如pre-commit)更受欢迎,因为客户端钩子需要每个用户手动设置,而且可以被绕过。

  • 必须由每个用户手动设置
  • 可以被绕过

对于给定的存储库,服务器端钩子将强制执行您想要的任何规则,如果不遵守您的策略,则会拒绝git推送。

这假设您对您的用户正在推送到的远程存储库托管服务器有控制权。

如果您不这样做,那么您将回到客户端预提交挂钩,可以通过git模板设置,其模板目录可以在所有用户之间共享(从git 2.9,2016年6月开始)

3
服务器端Git钩子是您的解决方案,但设置和维护钩子(通常还包括服务器)也会增加额外负担。
如果您正在寻找SaaS解决方案(用于服务器端Git钩子),那么Datree*正是为您做的。
*免责声明:我是Datree的联合创始人和产品负责人,但作为积极的开源贡献者,我对这个问题非常熟悉。我还写了一篇关于这个问题的博客文章-如何更好地利用您的Git提交消息

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接