我已经使用以下方法将 GitHub 存储库克隆到本地计算机上的新目录中:
git clone git@github.com:*****/project.git destination-dir
克隆工作正常,但每当我尝试 pull 或推时,我都会返回此错误:
error: insufficient permission for adding an object to repository database .git/objects
fatal: git write-tree failed to write a tree
我做错了什么?我该如何解决这个问题。从我目前在网上读到的内容来看,如果您使用自己的存储库(即不是 GitHub),问题就微不足道了,但是如果在 GitHub 上(没有 ssh 访问权限)我该怎么办。
另外,我应该补充一点,我的机器上有另一个目录指向 GitHub 上的同一个存储库,这对于 pull 和推送都很好。
最佳答案
这看起来与 GitHub 本身无关。
从您在评论中所说的来看, stash 的 .git
文件夹(包含所有本地 git 存储库数据)中的写入权限似乎与您的 git 的权限不对应当你运行它时,客户端有。
可能是您使用一个用户帐户(或使用 sudo
)克隆了存储库,但试图从另一个用户那里 pull/推送。如果不是这种情况,克隆时可能有什么东西弄乱了您的本地文件权限。
正如您所说,执行 chown -R login:group projectDir/
解决了问题,因为它递归地重置了项目文件夹中的所有权限(包括 .git
的权限)文件夹及其内容)。
一个好的实验是尝试将相同的存储库克隆到不同的文件夹,以查看问题是否再次发生。如果是这样,则可能是您的默认权限用户掩码和/或您的 git 客户端权限有问题。
关于linux - 从 GitHub pull 时的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18123525/