0

我正在尝试创建一个更新后脚本并将 git 用作远程服务器上的部署工具。

我的更新后脚本看起来像这样

git update-server-info

for ref in $@;do
                echo $ref
                if [ "$ref"  = "refs/heads/production" ]
                then
                        ssh git@myProductionServer.com GIT_WORK_TREE=/home/www/test git checkout -f production
                fi
done

但是,当我运行它时,会返回一个错误,上面写着:

Not a git repository (or any of the parent directories): .git

这没有任何意义,因为我可以通过 ssh 从目录中运行 git 命令。 在此处输入图像描述

在我的更新后脚本中我还需要做些什么吗?


解决方案

我添加了GIT_DIR变量,所以现在我的命令如下所示:

ssh git@myProductionServer.com GIT_DIR=/home/www/test/.git GIT_WORK_TREE=/home/www/test git checkout -f production
4

1 回答 1

3

您还需要设置GIT_DIR环境变量 - 请尝试以下操作:

ssh git@myProductionServer.com GIT_WORK_TREE=/home/www/test GIT_DIR=/home/www/test/.git git checkout -f production

关于GIT_DIRand GIT_WORK_TREE(以及它们的等价物,--git-dir=<>and --work-tree=<>)的规则对我来说是如此违反直觉,以至于我现在制定一条规则,如果我设置其中任何一个,我应该设置两者,并确保它们都是设置为绝对路径。

于 2011-03-23T06:08:27.193 回答