为了使用git远程更新我的网站,我在共享主机帐户的根目录下创建了一个简单的git repo以及以下的post-receive钩子:
#!/bin/sh
export GIT_WORK_TREE=/public_html
git checkout -f
这最初按预期工作:将我的更改推送到远程仓库时,触发后接收挂钩并将文件签出到/ public_html文件夹。
但是,我现在得到一个“致命的:这个操作必须在工作树中运行”结帐时出错。我不知道为什么现在出现这个错误,因为我没有对我的设置做任何改动。
我被困住了。对我来说,这应该只是工作(它实际上是这样),除非我完全误解了git是如何工作的。我一直在寻找类似于我的问题,但到目前为止还没有找到任何有用的东西。
如果我有任何想法,我将不胜感激。
答案 0 :(得分:0)
挂钩在.git
目录中运行。
我在cd ..
之前使用git checkout
作为一个简单的解决方法。
如果.git
回购与结帐地点完全脱节,您还可以想象
cd /path/to/checkout
GIT_DIR=/path/to/repo/.git git checkout -f
答案 1 :(得分:0)
我有类似的问题。我曾尝试更改hooks / post-receive中的目录并且正在上传,但之后我会收到错误' remote:fatal:此操作必须在工作树中运行'。我查看了git的工作实例,并注意到唯一的区别是在checkout命令之前的GIT_WORK_TREE之后的换行符。当我删除那个休息以便git checkout -f在同一行时,它有效!
改变了这一点:
#!/bin/sh
GIT_WORK_TREE=/var/www/vhosts/dylanglockler.com/dev.brightsideresumes.com
git checkout -f
对此:
#!/bin/sh
GIT_WORK_TREE=/var/www/vhosts/dylanglockler.com/dev.brightsideresumes.com git checkout -f
答案 2 :(得分:0)
我的解决方案:
git clone --mirror git@github.com:iamshaunjp/tailwind-tutorial.git tailwind-tutorial/.git/;
cd tailwind-tutorial;
git init;
git branch -a;
git checkout lesson-19;