git post-receive工作不正常

时间:2012-03-28 10:45:53

标签: git git-post-receive

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

#!/bin/bash
cd /var/www/site
git pull origin master

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

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

然而,当我手动cd到/var/www/site并执行git pull origin master时,它的效果非常出色。

2 个答案:

答案 0 :(得分:16)

使用未设置的GIT_DIR,如下所示

#!/bin/bash
cd /var/www/site || exit
unset GIT_DIR
git pull origin master
exec git-update-server-info

您可以在此处查看有关 GIT_DIR 的更多信息。 Git Loves the Environment

答案 1 :(得分:2)

另一个选择是你可以在命令中提到工作目录和git目录。

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git <command>

e.g:

git --work-tree=/home/user/repos/my_app --git-dir=/home/user/repos/my_app/.git status