post-receive hook失败“没有工作树就无法使用”

时间:2011-10-05 16:54:35

标签: git git-checkout

我使用此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抱怨没有工作树呢?相同的语法适用于其他网站。

1 个答案:

答案 0 :(得分:2)

您可能应该使用git archive而不是git checkout来查看您在此处尝试执行的操作(使用挂钩将文件导出到Web服务器的文档根目录)。

git archive HEAD | tar -xC /home/domains/mydomain/html/

这给您带来的一个好处是能够不从存储库导出某些文件(使用.gitattributes export-ignore标志)。