我的一个同事正在解决他的机器上的git变更问题.如果他登录到另一台机器,他可以推得很好 - 但是从他的机器,当他试图推动他得到以下错误
D:\Projects\test1\best-practices>git push Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 273 bytes, done. Total 3 (delta 1), reused 0 (delta 0) error: unable to create temporary sha1 filename ./objects/42: Permission denied fatal: failed to write object error: unpack failed: unpacker exited with error code To //civ3s012/gitrepos/best-practices/.git ! [remote rejected] master -> master (n/a (unpacker error)) error: failed to push some refs to '//civ3s012/gitrepos/best-practices/.git'
服务器是一台Windows机器,客户端也是如此.没有其他人遇到这个问题 - 这似乎是一个服务器权限问题,但我们已经根据我们的判断排除了这一点.此外,他可以使用相同的用户名登录到另一台计算机并进行推送,这使得它看起来不是服务器权限.有什么想法可能会出错吗?
我不是一个Windows用户,所以我在这里的黑暗中刺了一下.它看起来像是挂载了远程文件系统,你只是推动它(不使用ssh://或git://).这个FS以某种方式安装只读吗?他可以在那里(外面git
)创建/修改文件吗?
尝试将此配置变量添加到远程存储库:
$ git config core.sharedRepository "all" $ git config receive.denyNonFastForwards True
这些通常由设置回购时的--shared
选项git init
设置.
我不知道Windows权限如何交互,所以我不确定这是解决方案.但我知道有时Linux用户可以用这种方式创建具有Git远程失败权限的文件.它发生在他们属于适当的群体但没有作为他们的主要群体时.设置repo共享来all
解决这个问题.
这似乎发生在从SVN或CVS导入的共享存储库中.