防止 `git` 使用给定的提交消息推送提交
prevent `git` from pushing commits with given commit message
如何防止git在提交消息中推送包含给定字符串的提交,例如"DO NOT PUSH" ?
Context/usecase:
我的典型工作流程是:
我 hack hack,将工作分成微提交,
一旦一切正常,我就会重写历史记录,更改提交顺序以合理地将它们分组,然后再压缩成更大的有意义的部分。
一旦工作准备就绪,就可以推送了!
现在我想 git 防止我不小心推入仍在进行中的存储库提交。
我考虑将 "DO NOT PUSH" 作为提交消息的一部分。
如何让 git 在 git push
之后达到这样的提交时自动阻止我推送?
(关于预接收挂钩解决方案:让我们将 github 作为示例服务,AFAIK does not allow pre-recevie hooks,除了它的 "Enterprise" 版本)
您可以使用 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 等远程服务器时)
如何防止git在提交消息中推送包含给定字符串的提交,例如"DO NOT PUSH" ?
Context/usecase:
我的典型工作流程是: 我 hack hack,将工作分成微提交, 一旦一切正常,我就会重写历史记录,更改提交顺序以合理地将它们分组,然后再压缩成更大的有意义的部分。 一旦工作准备就绪,就可以推送了!
现在我想 git 防止我不小心推入仍在进行中的存储库提交。
我考虑将 "DO NOT PUSH" 作为提交消息的一部分。
如何让 git 在 git push
之后达到这样的提交时自动阻止我推送?
(关于预接收挂钩解决方案:让我们将 github 作为示例服务,AFAIK does not allow pre-recevie hooks,除了它的 "Enterprise" 版本)
您可以使用 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 等远程服务器时)