发布提交挂钩未运行

Dav*_*ong 41 git bash github post-commit githooks

我的帖子提交挂钩在git之后没有运行.我已经验证了如果我从终端运行它,钩子确实有效.钩子中的代码是:

#!/bin/sh
#.git/hooks/post-commit
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git
Run Code Online (Sandbox Code Playgroud)

我确实将文件重命名为./.git/hooks/中的post-commit,权限是-rwxr-x-r-x如此,我不知道为什么它不起作用.

Ste*_* Lu 188

我会把这个留在这里作为答案,因为当我的 post-commit钩子没有运行时,偶然发现了我自己的答案:

chmod +x .git/hooks/post-commit

可能适用于任何类型的钩子.实际上,可能适用于任何类型的脚本.

  • 这正是我遇到的问题.感谢您将其作为答案. (14认同)
  • 如果你有权限777并且钩子仍未运行怎么办?post-checkout运行,但是post-receive不是,当它是完全相同的命令时.它应该在git pull上运行. (3认同)

Pet*_*mer 27

尝试在perl行之前和之后放置一些回声线,如下所示:

echo "post-commit started"
perl ...........
echo "post-commit finished"
Run Code Online (Sandbox Code Playgroud)

这样,您可以确认脚本是否实际运行,因为您运行时

git commit
Run Code Online (Sandbox Code Playgroud)

你应该看到

post-commit started
post-commit finished
Run Code Online (Sandbox Code Playgroud)

接近输出结束.


Bry*_*son 17

我的post-commit脚本没有被调用,因为:

我已经命名了剧本post-commit.sh,而不仅仅是post-commit.

要启用钩子脚本,请将文件放在.git目录的hooks子目录中,该目录名称相应(没有任何扩展名)并且是可执行的.从那时起,它应该被称为.我们将在这里介绍大多数主要的钩子文件名.见git-scm

不知道为什么我的脑子里有钩子需要bash文件扩展名.

我也没有意识到钩子脚本不能有文件扩展名.例如,

如果要使用捆绑的钩子脚本,则必须重命名它们; 他们的文件名都以.sample结尾

希望这有助于某人.

  • 我也错过了那部分指示; 我刚刚看到`但是任何正确命名的可执行脚本都可以正常工作并在precomcom.sh中删除.结束这个问题,看到了最流行的答案,并想"是的,我已经做到了".然后我注意到你的答案.谢谢! (2认同)