【发布时间】:2016-10-26 03:31:26
【问题描述】:
所以,我在网络驱动器上创建了一个 git 存储库:
git init --bare --shared
而且效果很好。然后,我使用
将其克隆到本地驱动器git clone z:/testgit
这也很好用。然后我添加一个文件、阶段和提交
git stage *
git commit -m "test commit"
而且也可以正常工作。但!当我尝试推送到原点时,出现此错误。
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'
当尝试直接在服务器上(在非 --bare git 项目上)使用 git stage * 时,我会遇到类似的错误。
我可以完全访问文件资源管理器中的驱动器,甚至可以使用 git 初始化存储库。 SSH 甚至不应该在这里应用,因为它不是服务器,而是网络驱动器。我读过的关于 git 的所有内容都表明这应该有效。我已经阅读了几十篇“如何做”,都说了这些确切的步骤,但没有人抱怨权限被拒绝,除非他们谈论的是服务器上缺少 SSH 公钥(正如我所说,这不应该适用)。
我缺少什么权限?我应该在哪里寻找并设置适当的权限?
【问题讨论】:
-
我不做Windows,所以我不确定发生了什么,但是“权限被拒绝”意味着您不允许写入网络共享驱动器。这很有趣,因为大概您刚才写信来创建裸仓库。请注意,当两个存储库都是本地的(不使用 ssh 或 http)时,您自己的 Git 会生成进程以充当与“其他存储库”对话的“其他 Git”,因此它可能与此有关。无论如何,这听起来像是一个 Windows 网络驱动器问题,而不是真正的 Git 问题。
-
尝试将
Everyone添加到文件夹/文件访问权限中。 -
user9000,这正是它的设置。该驱动器已授予所有人完全权限。
-
如果你将远程仓库的
transfer.unpackLimit设置为1,推送时还会出现错误吗? -
“权限被拒绝”消息也可能意味着相关文件已被其他程序锁定。我会说这是大多数情况下的真正原因。
标签: windows git shared-directory