所以,我在网络驱动器上创建了一个git存储库:
git init --bare --shared
这很好.然后,我将它克隆到本地驱动器
git clone z:/testgit
这也很好.然后我添加一个文件,阶段和提交
git stage *
git commit -m "test commit"
并且ALSO工作正常.但!当我尝试推送到原点时,我收到此错误.
git push origin
Counting objects: 3, done.
Writing objects: 100% (3/3), 225 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: unable to write sha1 filename ./objects/f3/e6e90a7465421306fae05c18153260973542e3: Permission denied
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To z:/testgit14
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'z:/testgit'
当试图直接在服务器上使用git stage *(在非裸git项目上)时,我得到类似的错误.
我可以完全访问文件资源管理器中的驱动器,甚至可以使用git初始化存储库. SSH甚至不应该在这里应用,因为它不是服务器,它是一个网络驱动器.我读过的关于git的一切都说这应该有效.我已经阅读了几十个“如何做”,所有人都说这些确切的步骤,但没有人抱怨权限被拒绝,除非他们谈论服务器上缺少SSH公钥(正如我所说,不应该适用).
我缺少什么权限?我应该在哪里寻找并设置适当的权限?
最佳答案 当你尝试创建git抱怨的文件时会发生什么?
echo test > ./objects/f3/e6e90a7465421306fae05c18153260973542e3
git可能正在创建一个新文件夹(f3),并且该文件夹未获得正确的权限,这可能是由于ACL继承配置错误,或者是因为本地计算机正在尝试调整新创建的文件夹的权限并导致错误.
如果它是Linux,可能是因为网络驱动器连接错误的挂载选项,或者umask设置不正确,但我不确定是否可以在Windows机器上更改它们.