我正在尝试使用git将更改部署到本地托管服务器上的站点。当我将更改从本地目录推送到开发服务器时,后接收挂钩提供了我期望的反馈,如果它正常工作,但它实际上并没有更改工作树中的任何文件。
此外,我正在使用mac进行开发,该网站托管在网络上共享的Windows服务器上并挂载到/ Volumes / I $
这是钩子脚本
#!/bin/bash
GIT_DIR=/Volumes/I$/intranet_dev
WORK_TREE=/Volumes/I$/intranetdev
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
echo "Master ref received. Deploying master branch to test server..."
mkdir -p $WORK_TREE
git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f
echo "Git hooks deploy complete"
else
echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server."
fi
done
裸存储库位于我标记为“test”的遥控器上。当我发出以下命令时,我在终端中得到以下输出......
computername:intranet username$ git push test master
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 566 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
remote: Master ref received. Deploying master branch to test server...
remote: Git hooks deploy complete
To /Volumes/I$/intranet_dev
1d9eb1f..f49b533 master -> master
这一切都看起来应该如此,但是不会复制更改的文件。
答案 0 :(得分:0)
您正在查看当前的HEAD
。你确定附加到主分支?为什么要依靠那个?请尝试签出master
。
小点,if [[ $ref = */master ]]
(或者只要我们安全,所有,if [[ $ref = refs/heads/master ]]
正如@torek指出的那样)就是你所需要的。