如何防止git在提交按摩中推送包含给定字符串的提交,例如“不要推”?
上下文/用例:
我的典型工作流程是: 我破解黑客,将工作分成微提交, 一旦事情有效,我就会重写历史,改变提交的顺序,合理地将它们分组,然后压缩成更大的有意义的部分。 一旦准备就绪,事情就可以推进了!
现在我希望git能够防止我意外地进入仍在进行中的存储库提交。
我认为保持“不要推”作为提交消息的一部分。
如何让git在git push
之后达到此类提交时自动阻止我推送?
(对于预接收挂钩解决方案:我们将github视为示例服务,AFAIK does not allow pre-recevie hooks除外,其“企业”版本除外)
答案 0 :(得分:8)
您可以使用pre-push
挂钩,但这仍然是可以绕过的本地挂钩
见pre-push example which does look at each commit message
# 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"
但最好的方法仍然是服务器端的pre-receive
hook。这样,该策略就会对所有贡献者实施。这并非总是可行(当您无法直接访问远程服务器时,如GitHub,BitBucket或GitLab.com)