git post-receive pitfall

· 196 words · 1 minute read

昨天下午折腾一个 git 仓库的 hook 脚本问题 - 我在远程仓库的post-receive 脚本中指定去更新另外一个工作目录,虽然脚本被执行了,且手工单独运行时工作正常,但是放在 hook 脚本中跑就是不行。原因在于远程git 运行 hook 脚本时,环境变量GIT_DIR 会被设为 .,因而导致错误。

该脚本可以写为如下:

cd /path/to/working/dir
unset GIT_DIR
git pull origin master

其中清除 GIT_DIR 非常重要1。可惜,官方文档 中根本就没有提。

或者,更直接一点:

git --work-tree=/path/to/working/dir \
    --git-dir=/path/to/working/dir/.git \
    pull origin master
git
comments powered by Disqus