我使用此Git设置来管理网站:http://toroid.org/ams/git-website-howto。
事情有效,直到我激活后接收挂钩。在激活它之前,我可以毫无问题地推拉。但是,如果我激活了钩子,它会说:
fatal: /usr/bin/git-checkout cannot be used without a working tree.
error: hooks/post-receive exited with error code 1
它仍然可以正常拉,但不会复制文件(对于webroot)。但收到后的钩子写道:
#!/bin/sh
GIT_WORK_TREE=/home/domains/mydomain/html/ git checkout -f
那么为什么git抱怨没有工作树呢?相同的语法适用于其他网站。
答案 0 :(得分:2)
您可能应该使用git archive
而不是git checkout
来查看您在此处尝试执行的操作(使用挂钩将文件导出到Web服务器的文档根目录)。
git archive HEAD | tar -xC /home/domains/mydomain/html/
这给您带来的一个好处是能够不从存储库导出某些文件(使用.gitattributes
export-ignore标志)。