Git推送随机失败
问题描述:
我与另外两个朋友一起编码,我们都使用同一个存储库。出于某种原因,git对我来说随机失败,只有我。Git推送随机失败
error: insufficient permission for adding an object to repository database .git/ objects
什么是有趣的是,我们注意到,当朋友一推他的代码,我再也不会收到此错误,而且我可以高兴地把我的代码。现在,当朋友B推送他的代码时,突然间,我再次看到这个错误。
这是非常奇怪的 - 我在这里错过了什么?
答
可能的想法:
你的Git仓库,未配置为共享。
您的目录权限并不完全正确,根据谁创建
.git/objects
的子目录,您可能有写权限,也可能没有写权限。 (如果你的文件服务器被配置为不尊重目录上的组粘贴位,这个问题会特别严重,我被这个问题困住了,它仍然存在,据我所知,如果你的服务器是这样配置的,那么这是不可能的在不同的组向多个用户推到一个混帐回购协议。)
这将是知道哪些OS上和文件系统的回购是特别有用的存储和权限如何设置。
答
为了扩大Norman Ramsey所说的某些事情,关于将您的存储库配置为共享:要执行此操作,请转至回购并运行git config core.sharedRepository true
。这将告诉git使它在存储库组中创建的文件可写;在完成此操作后,您还应该运行sudo chmod -R g+w .
以确保现有文件也可以设置为可写组。当然,所有使用存储库的用户都必须属于拥有这些文件的组才能工作。
我正在考虑文件权限问题,但我们需要更多关于您的存储库的细节以及如何连接到它以便说出任何有用的信息。你运行什么样的服务器? (Windows/Linux /其他)哪些用户拥有存储库文件?你通过SSH连接?当你使用git连接时,你登录了哪个用户? – 2010-06-27 00:13:22
这三个用户中的每个用户都具有相同的访问权限,并分别通过其各自帐户上的SSH进行连接。服务器本身就是Ubuntu。根拥有存储库文件。 我不明白的是为什么另一个人推动应该导致我的失败,另一个推动我的成功=/ – Dirk 2010-06-27 00:19:00