我已经设置了其中的一些并使它们正常工作,但在我的一台服务器上,我似乎无法将文件显示在登台服务器上。我可以推动生活,他们没有问题。
在服务器上采取的步骤:
mkdir staging
cd staging
mkdir staging.git
cd staging.git
git init --bare
cd hooks
touch post-receive
nano post-receive
chmod +x post-receive
我在收件后文件中发布了以下内容:
#!/bin/sh
GIT_WORK_TREE=/var/www/my-site.com/public_html/staging git checkout -f master
从我当地的机器上我做了:
git remote add staging myuser@my-site.com:/var/www/my-site.com/staging/staging.git
git add .
git commit -m "Pushing to staging"
git push staging master
git推得很好,没有错误,但文件无处可寻。这是我在其他服务器上成功使用的完全相同的设置,以及我用于推送生活的完全相同的设置,这有效。
我搞砸了原来的设置,从服务器上删除了整个暂存目录,删除了远程并重新启动了整个过程。我认为我一路上都错过了什么?
我对此问题的第二部分是,我的.git文件夹是否必须位于暂存文件夹中,或者GIT_WORK_TREE路径是否必须指向暂存文件夹,而远程需要指向.git文件夹?
答案 0 :(得分:1)
我在您的设置中看不到的唯一步骤是chmod +x post-receive
,以确保它是可执行的。
我会使用更可靠的:
git --git-dir=/var/www/my-site.com/staging/staging.git --work-tree=/var/www/my-site.com/staging checkout -f master
我的
中.git
文件夹必须位于暂存文件夹
如果http文件服务器可见/寻址,您的裸仓库可以是您想要的任何地方 这与工作树不同,工作树引用您签出代码的文件夹。