git“预推”挂钩标准输入为空

Tri*_*nch 5 git bash githooks

我正在尝试创建一个预推送挂钩,以防止用户推送到他们所在分支以外的分支。

基于 pre-push.sample (以及我读过的各种线程),看起来我应该能够读取我正在推送的本地分支以及我通过 stdin 推送到的远程分支:

while read local_ref local_sha remote_ref remote_sha
do
...
done
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,local_ref其他变量为空(即使运行未经编辑的示例挂钩,它也永远不会进入循环)。

我需要执行一些配置或其他步骤才能访问 stdin 中的变量吗?

我在用着git version 2.17.1

Von*_*onC 0

首先,确保你的钩子被调用了。
这意味着:

  • 它的名字应该是pre-push(不.sample
  • 它应该是可执行的(除非您使用的是 Windows,在这种情况下它默认是可执行的)