【问题标题】:Git push randomly failsGit推送随机失败
【发布时间】:2010-06-27 00:09:34
【问题描述】:

我正在和另外两个朋友一起编码,我们都使用同一个存储库。出于某种原因,git 对我来说随机失败,而且只有我。

错误:将对象添加到存储库的权限不足 数据库 .git/ 对象

有趣的是,我们注意到当朋友 A 推送他的代码时,我不再收到此错误,我也可以愉快地推送我的代码了。现在当朋友 B 推送他的代码时,我突然又看到了这个错误。

这太奇怪了——我在这里错过了什么?

【问题讨论】:

  • 我在考虑文件权限问题,但我们需要有关您的存储库以及如何连接到它的更多详细信息,以便说出任何有用的信息。你在什么样的服务器上运行? (Windows/Linux/其他)哪些用户拥有存储库文件?您是否通过 SSH 连接?当您使用 git 连接时,您以什么用户身份登录?
  • 三个用户都拥有相同的访问权限,并在各自的帐户上分别通过 SSH 连接。服务器本身是 Ubuntu。 Root 拥有存储库文件。我不明白的是为什么另一个人推动应该导致我失败,另一个人推动导致我成功=/

标签: git repository collaboration


【解决方案1】:

可能的想法:

  • 您的 git 存储库未配置为共享

  • 您的目录权限不太正确,取决于谁创建了.git/objects 的哪个子目录,您可能有也可能没有写权限。 (如果您的文件服务器配置为不支持目录上的组粘性位,则此问题可能特别严重。我被这个咬了,但它仍然刺痛。据我所知,如果您的服务器以这种方式配置,这是不可能的供不同组中的多个用户推送到单个 git 存储库。)

了解您的存储库存储在哪个操作系统和文件系统以及如何设置权限会特别有用。

【讨论】:

  • 有趣的想法,我们在 Ubuntu 服务器上运行,我将快速修复组——我之前已经看到了(对象归用户所有,而用户组)——没有把它们放在一起。会让你知道的。
  • 到目前为止,这看起来很有希望(尽管我们需要等待我们的第三个编码器回来才能确定)
【解决方案2】:

要扩展 Norman Ramsey 所说的关于将存储库配置为共享的内容:为此,请转到存储库并运行 git config core.sharedRepository true。这将告诉 git 使其在存储库组中创建的文件可写;完成此操作后,您还应该运行sudo chmod -R g+w . 以确保现有文件也设置为组可写。当然,所有使用存储库的用户都必须属于拥有这些文件的组才能使其正常工作。

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2016-01-21
    • 2013-03-17
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多