Git:无法从一台电脑推送

9
我的一位同事在他的电脑上无法从git推送更改。如果他登录另一台机器,他可以轻松地推送,但是在他的机器上尝试推送时,他会收到以下错误:
    D:\ Projects \ test1 \ best-practices> git push
    计数对象:4已完成。
    压缩对象:100%(2/2),已完成。
    写入对象:100%(3/3),273字节,已完成。
    总数3(增量1),重用0(增量0)
    错误:无法创建临时sha1文件名./objects / 42:权限被拒绝
    
    致命错误:写入对象失败
    错误:解包失败:解包程序退出并显示错误代码
    到//civ3s012/gitrepos/best-practices/.git
     ! [remote rejected] master -> master (n/a (unpacker error))
    错误:未能将某些引用推送到'//civ3s012/gitrepos/best-practices/.git'
服务器和客户端都是Windows机器。没有其他人遇到此问题-似乎是服务器权限问题,但我们已经排除了这种情况。此外,他可以使用相同的用户名登录不同的机器并推送,这使它似乎不是服务器权限的问题。有什么想法吗?

1
权限问题是导致我出现这个错误的原因。 - Kzqai
6个回答

6

我并不是windows用户,所以在这里有点瞎猜。看起来远程文件系统已经被挂载,你正在向其推送内容(没有使用ssh://或git://)。那个文件系统是否以只读方式挂载?他能否在那里创建/修改文件(除了用git)?


我的错误是remote unpack failed: unable to create temporary object directory To //<my local computer>/repository/tutorial3.git。是的,我使用自己的Win7机器。您的回答对我很有帮助。一旦我更改了存储库文件夹的“共享权限”(在“读取”旁边添加“更改”),我就可以推送了。谢谢。 - Just a HK developer

6

尝试将此配置变量添加到远程仓库中:

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

这些通常是通过--shared选项在git init设置存储库时设置的。

我不知道Windows权限如何交互,所以我不确定这是否是解决方案。但我知道有时Linux用户可以创建具有权限的文件,但在Git远程中以完全相同的方式失败。当它们属于正确的组但不将其作为其主要组时会发生这种情况。将存储库共享设置为all可以解决此问题。

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


这对我们并没有解决问题 - 顺便说一下,这个仓库不是从 SVN 或 CVS 导入的,而是从 git 开始的。谢谢。 - Matt McMinn

3

我知道这听起来是一种简单的系统管理员解决方案,但你是否验证过他的硬盘是否已满?


是的,这种情况已经发生过很多次了,现在我大多数时候都会首先检查它。 - Matt McMinn

2
问题最终是由于共享文件夹的存储密码只允许读取访问而不允许写入访问。即使我们使用适当的用户名和密码显式挂载驱动器,存储的密码也必须在后台使用,这使得跟踪此问题变得困难。为了清除密码,我们进入控制面板,用户账户,点击高级选项,管理密码,并删除相关服务器的登录信息。之后,一切都按照预期运行。我接受Pat Notz的答案,因为它最终是只读文件系统。谢谢!

感谢您发布根本问题和解决方案的详细信息! - Pat Notz
我同意。哦,还有呕!我从来没有想过要检查那个。 - T.E.D.

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

他刚刚开始着手进行这个项目,并没有明确创建任何分支。 - Matt McMinn

0

又是一个毫无头脑的回答。你确定你有权限读取那些文件吗?我也遇到过几次,我会因为错误地以另一个用户身份进行更改。然后稍后我就无法推送。Chown 是你的朋友。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接