阻止'git'使用给定的提交消息推送提交

阻止'git'使用给定的提交消息推送提交,git,repository,workflow,Git,Repository,Workflow,如何防止git在提交消息中推送包含给定字符串的提交,例如“不推送” 上下文/用例: 我的典型工作流程是: 我破解破解,将工作拆分为微提交, 一旦事情进展顺利,我就重写历史,改变承诺的顺序,合理地将它们分组,然后将它们压缩成更大更有意义的片段。 一旦工作准备好了,事情就可以推进了 现在,我希望git能够防止我意外地将仍在进行中的提交推送到存储库中。 我考虑将“请勿推送”作为提交消息的一部分。 如何使git在git push之后到达这样的提交时自动阻止我进行推送 (关于预接收钩子解决方案:让我们考虑

如何防止git在提交消息中推送包含给定字符串的提交,例如“不推送”

上下文/用例:

我的典型工作流程是: 我破解破解,将工作拆分为微提交, 一旦事情进展顺利,我就重写历史,改变承诺的顺序,合理地将它们分组,然后将它们压缩成更大更有意义的片段。 一旦工作准备好了,事情就可以推进了

现在,我希望git能够防止我意外地将仍在进行中的提交推送到存储库中。 我考虑将“请勿推送”作为提交消息的一部分。 如何使git在
git push
之后到达这样的提交时自动阻止我进行推送


(关于预接收钩子解决方案:让我们考虑GITHUB作为示例服务,除了它的“企业”版)

,您可以使用<代码>预推< /代码>钩子,但这仍然是一个可以被绕过的本地钩子。 看到这个了吗

#检查foo提交
提交=`git rev list-n1--grep'^foo'$range“`
如果[-n“$commit”]
然后
echo“错误:git预推钩子在$local\u ref中找到以“foo”开头的提交消息”

但最好的方法仍然是在服务器端使用。这样,该策略将对所有贡献者强制执行。这并不总是可能的(当您无法直接访问远程服务器,如GitHub、BitBucket或GitLab.com时)

无法为您完成任务?答案中是否缺少任何内容?*我有多个草稿微提交的多个分支,我正在处理它们:测试它们,比较一下,等等。*
git-rebase-i
是最适合我的东西。一旦我达到所需的形状,我会编辑并挤压提交。为什么预推不合适?只需要时间再仔细看看:)谢谢@Leon当然,补充道。如上所述,这是正确的答案,但验证也必须在服务器端进行。任何开发人员都可以禁用本地钩子,因此您必须在服务器上验证它。您需要验证的唯一一件事是,答案使用
-n1
,它将只检查最后一次提交,因此您需要在所有提交中执行该操作,因为用户可能会同时推送多个提交。