git post-receive工作不正常

and*_*ndy 10 git git-post-receive

我有以下问题.我已将'post-receive'更新为cd到某个目录,然后将repo拉进去进行部署,如下所示:

#!/bin/bash
cd /var/www/site
git pull origin master
Run Code Online (Sandbox Code Playgroud)

但是每当我在本地机器上执行'git push origin master'时,我会得到以下结果:

Counting objects: 5, done.
Delta compression using up to 2  threads.
(etc..)
remote: fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)

然而,当我手动cd到/var/www/site并做git pull origin master它出色的工作.

Has*_*nka 17

使用未设置的GIT_DIR如下

#!/bin/bash
cd /var/www/site || exit
unset GIT_DIR
git pull origin master
exec git-update-server-info
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看有关GIT_DIR的更多信息. Git喜欢环境

  • `GIT_DIR`是您可以为各种git命令设置的少数环境变量之一.在post-receive钩子中,`$ GIT_DIR`总是(?)设置为`.`.如果你在其他地方`cd`,'git pull`仍然会看到`$ GIT_DIR`设置为`.`并期望在`.`中找到repo,但是你已经移动了它并不存在.清除它会使git回到它的"正常"行为(在```git`,在你'cd`-ed的地方). (2认同)