You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git钩子触发但未执行:post-receive创建文件失败问题排查

Git post-receive钩子执行后未生成预期文件的问题解决

问题情况

  • 在远程仓库的.git/hooks目录下创建了post-receive钩子,代码如下:
#!/bin/sh

set -x
touch file
  • 已经用chmod +x .git/hooks/post-receive给钩子加上了执行权限
  • 从本地往远程推送代码时,能看到远程输出调试信息remote: + touch file,但找遍远程仓库都没看到生成的file文件
  • 直接在远程仓库里手动执行sh .git/hooks/post-receive,却能正常生成file文件

问题根源

Git运行post-receive钩子的时候,工作目录不是.git/hooks所在的目录,而是处于Git内部的某个路径。这时候用相对路径touch file创建的文件,其实是在钩子的执行路径里,而非你以为的远程仓库目录。

解决办法

把钩子里的相对路径改成绝对路径就行,比如:

#!/bin/sh

set -x
touch /home/file

修改后再推送代码,就能在指定的绝对路径下成功生成文件了。

内容的提问来源于stack exchange,提问作者Sherif eldeeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:52:02