Git:不能从一台电脑上推

时间:2008-12-29 17:50:16

标签: git

我的一个同事在他的机器上从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机器,客户端也是如此。没有其他人遇到这个问题 - 它似乎是服务器权限问题,但我们已经根据我们的判断排除了这一点。此外,他可以使用相同的用户名登录到另一台计算机并进行推送,这使得它看起来不是服务器权限。任何想法可能会出错?

6 个答案:

答案 0 :(得分:6)

我不是一个Windows用户,所以我在黑暗中刺了一下。它看起来像是挂载了远程文件系统而你只是推动它(不使用ssh://或git://)。这个FS以某种方式安装只读吗?他可以在那里创建/修改文件(在git之外)吗?

答案 1 :(得分:5)

尝试将此配置变量添加到远程存储库:

 $ git config core.sharedRepository "all"
 $ git config receive.denyNonFastForwards True

这些通常由--shared中的git init选项设置,当设置回购时。

我不知道Windows权限如何交互,所以我不确定这是解决方案。但我知道有时Linux用户可以用这种方式创建具有Git远程失败权限的文件。当它们属于正确的组但没有将它作为主要组时,就会发生这种情况。将回购共享设置为all可以解决这个问题。

这似乎发生在从SVN或CVS导入的共享存储库中。

答案 2 :(得分:3)

我知道这是一个简单易用的系统管理员吹嘘答案,但你确认他的硬盘没有装满吗?

答案 3 :(得分:2)

问题最终成为该共享的存储密码,允许读访问,但不允许写访问。即使我们使用适当的用户名和密码显式安装驱动器,也必须在后台使用存储的密码,这使得难以追踪。要清除密码,我们转到控制面板,用户帐户,单击高级,管理密码,并删除相关服务器的登录信息。在那之后,一切都按预期工作。我接受了Pat Notz的回答,因为它最终成为了一个只读的FS。谢谢!

答案 4 :(得分:0)

也许他在他的本地仓库中创建了一个分支,该分支已经存在于服务器上并且ref无法更新,因为它是由其他人创建的?

答案 5 :(得分:0)

另一个脑死的答案。您确定您有权阅读这些文件吗?发生在我身上的几次,我会误将其作为另一个用户。后来我不能推。 Chown是你的朋友。