git diff不在裸回购、后接收挂钩上工作

git diff不在裸回购、后接收挂钩上工作,git,gitlab,githooks,git-post-receive,Git,Gitlab,Githooks,Git Post Receive,我正在一个裸回购上的post接收挂钩上工作。 我想得到的文件名是改变和推动在这个裸回购(只有最新的一个)。 为了得到它,我使用这个命令 git diff——仅名称标题^ 这给了我一个错误,当我推到裸回购 remote: fatal: This operation must be run in a work tree 我知道bare repo中没有工作树,因此此命令失败,但如何运行此命令?我相信您要查找的命令是git diff--name only HEAD^HEAD。这将比较“当前”提交和之前

我正在一个裸回购上的post接收挂钩上工作。 我想得到的文件名是改变和推动在这个裸回购(只有最新的一个)。 为了得到它,我使用这个命令

git diff——仅名称标题^

这给了我一个错误,当我推到裸回购

remote: fatal: This operation must be run in a work tree

我知道bare repo中没有工作树,因此此命令失败,但如何运行此命令?

我相信您要查找的命令是
git diff--name only HEAD^HEAD
。这将比较“当前”提交和之前的提交。

这将在裸repo上提供
remote:fatal:Not git repository
。在非裸回购协议上,它运行良好。我需要在我的中心bare repo.Hmmm的post-receive钩子上运行它,这是一个非常令人费解的错误,因为它肯定是一个git存储库(否则您就不会得到问题中的原始错误)。我在我的裸回购协议上尝试了这个命令,它运行得很好,尽管不是作为挂钩的一部分。出于好奇,您能否从命令行在裸回购上运行该命令,即不作为钩子的一部分?@愚蠢,在裸回购中,上述命令没有任何错误。也许还有其他问题?这应该是
git diff--name only HEAD^HEAD
谢谢,@dumby,我已经为未来的搜索者更新了答案。