防止`git`用给定的提交消息推送提交

Grz*_*cki 7 git workflow repository

如何防止git在提交按摩中推送包含给定字符串的提交,例如"DO NOT PUSH"?

背景/用例:

我的典型工作流程是:我破解黑客,将工作分成微提交,一旦工作正常我改写历史,改变提交顺序,合理地将它们分组,然后压缩成更大的有意义的部分.一旦工作准备就绪,事情就好了!

现在我希望git能够防止我意外地进入仍在进行中的存储库提交.我认为保持"不要推"作为提交消息的一部分.如何让git自动阻止我在达到此类提交后推送git push

(对于预接收挂钩解决方案:让我们将github视为示例服务,AFAIK 不允许预先接收挂钩,但"企业"版本除外)

Von*_*onC 8

你可以使用一个pre-push钩子,但它仍然是一个可以被绕过的本地钩子.
请参阅此预推示例,该示例会查看每个提交消息

# Check for foo commit
        commit=`git rev-list -n 1 --grep '^foo' "$range"`
        if [ -n "$commit" ]
        then
echo "ERROR: git pre-push hook found commit message starting with 'foo' in $local_ref"
Run Code Online (Sandbox Code Playgroud)

但最好的方法仍然是服务器端的pre-receive 钩子.这样,该政策就会对所有贡献者实施.这并不总是可行的(当您无法直接访问远程服务器时,如GitHub,BitBucket或GitLab.com)