我正在尝试从我刚刚设置的远程存储库中拉出,我得到消息git-pull在没有工作树的情况下无法使用
我读到的所有内容似乎都指向我的.git目录,但看起来还不错
git branch给出输出
* master和
git ls-tree --full-tree -r HEAD列出大量条目,如下所示
100644 blob c825c0607f77e1df4e05920037a2ce09c08e5180app/assets/javascripts/ready.js哪一项看起来是正确的,并使我认为我已经成功地将文件正确地推送到此存储库?
git status给出输出
fatal: This operation must be run in a work tree和ls -l .git给出了
drwxrwxr-x 2 roy roy 4096 Feb 6 14:24 branches
-rw-rw-r-- 1 roy roy 66 Feb 6 14:24 config
-rw-rw-r-- 1 roy roy 73 Feb 6 14:24 description
-rw-rw-r-- 1 roy roy 23 Feb 6 14:24 HEAD
drwxrwxr-x 2 roy roy 4096 Feb 6 14:24 hooks
drwxrwxr-x 2 roy roy 4096 Feb 6 14:24 info
drwxrwxr-x 4 roy roy 4096 Feb 6 14:24 objects
drwxrwxr-x 4 roy roy 4096 Feb 6 14:24 refs这看起来确实有点奇怪,因为它看起来就像推送之前一样。
有人能帮我纠正我做错了什么吗?在我做git之前有什么需要做的吗?我是不是被ls-tree命令搞糊涂了,而且文件还没有被推送?
发布于 2015-05-07 04:59:29
看起来你是在一个裸库中工作。
裸存储库就像普通存储库一样,只是它没有关联工作目录。作为一个fetch加一个merge的pull,它不能应用于裸存储库。
具体内容如下:
毕竟,git存储库只是一个.git目录,其中定义了一组存储在特殊目录中的元数据(如存储本地和远程分支的refs,以及包含所有文件内容的objects,等等)。
通常,git存储库与所谓的工作目录相关联,工作目录是某个提交的签出:开发人员可以使用工作目录对源代码进行修改,从而准备下一次提交。
然而,有时不需要有一个工作目录。最常见的情况是将存储库托管在共享服务器中,并将其用作开发人员集成代码的中央共享位置。存储库必须存储所有信息(因此,它有自己的.git目录副本),开发人员可以将他们的贡献推送到存储库,但没有开发人员直接使用它;因此,没有提供工作目录。这是一个简单的存储库。
现在,有一些可以在工作目录上操作的git命令。这些命令在裸存储库上不起作用,因为它缺少工作目录。
git pull就是其中之一。git pull是git fetch和git merge的结合。现在,git fetch只涉及.git目录,因此可以在裸存储库上执行。另一方面,git merge需要在工作目录上执行合并。由于工作目录不存在,因此该命令将失败。
pull和merge并不是仅有的不能在裸存储库上执行的命令。我强烈建议您查看this interactive map,它将帮助您选择哪些操作不能在裸存储库(see the amazing Interactive Git Cheatsheet)上执行

https://stackoverflow.com/questions/21605884
复制相似问题