【问题标题】:Fix Git "object not found" for good永久修复 Git“找不到对象”
【发布时间】:2013-02-28 11:32:38
【问题描述】:

从一个拉到下一个,服务器上的每个git pull 都以这样的方式结束:

$ git pull
remote: Counting objects: 53, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 32 (delta 19), reused 0 (delta 0)
Unpacking objects: 100% (32/32), done.
error: unable to find 71682baccff823caa21420b16dd231c6b9c1b133
fatal: object 71682baccff823caa21420b16dd231c6b9c1b133 not found

git fetch 相同。我可以通过将文件.git/object/71/682baccff823caa21420b16dd231c6b9c1b133 复制到服务器来解决这个问题,但是在再拉一些之后,错误仍然存​​在,每次使用分支上的最新提交对象。

怎么会这样?我该如何永久修复它?

完整的git clone 不是一个好的解决方案,因为此存储库位于正在运行的服务器项目上,并且在没有 git 控制的情况下有更多文件。

是否可以将clone 复制到新目录,然后将.git 目录复制到旧文件夹中?或者有没有其他不接触目录的解决方案?

【问题讨论】:

  • 您能否在另一个目录中执行git clone 并比较这两个存储库中.git 目录的内容?这可能会告诉您缺少哪些对象。
  • @Tuxdude 问题是这条消息出现在 new 对象上——那些 应该 每次我做git pull 时都会自动拉出的对象。同样在新克隆的存储库中,所有对象都被压缩,无法进行比较。
  • 您可以运行git fsck 来验证 .git 目录中所有对象的有效性,以及任何丢失的对象。 git gc 也可能有助于修剪掉不需要的对象。
  • 也请查看此链接,kernel.org/pub/software/scm/git/docs/… 以获得一些有用的指示。
  • 不要替换 .git 目录(或其部分内容)!它包含整个历史(以及更多),如果你不知道自己在做什么,那么在那儿乱搞破坏项目。而且我只会在完整存储库的副本中翻找。

标签: git git-pull git-fetch


【解决方案1】:

我今天在使用 git 1.7.1 尝试从 centos 6 机器中 git pull 时遇到了这个问题。我将git客户端从rpmforge-extras升级到1.7.11后问题解决了。

【讨论】:

    【解决方案2】:

    我正在管理一个开发团队,它有一个损坏的 git 存储库,因为我们还没有时间修复它。我发现有很多东西可以让球保持移动,这可能会有所帮助。

    首先拥有一台 [gc] auto=0 的机器,然后将整个 repo 解压到对象

    其次,git 1.8 似乎比 1.7 更好地处理问题,所以有一台带有 git 1.8 的机器可以访问包含源的文件系统。

    第三,总是从 1.8 机器上 git fetch,然后从 1.7 机器上 git pull

    第四点,即使 1.8 也无法 git pull,您需要运行 git fsck |grep missing 并手动将对象从解压缩的 repo 复制到损坏 repo 上的对象存储中(缺少 0c0ef24... 将在对象中/0c/0ef24...)

    为什么 git fetch/pull 没有意识到这些从本地 git 中丢失并从原点获取它们对我来说是一个谜,但似乎手动执行 fetch 使 git 再次快乐。一旦你手动修复了一个 git repo 运行 git gc (但不是在解压的机器上,否则你需要找到丢失的对象才能再次手动修复,这很烦人)

    真正方便的是一个命令告诉 git 从 origin 获取特定对象,但我想如果它不需要询问就这样做会更好:-)

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      我可以解决这个问题

      1. 尝试获取(出现错误)
      2. 像上面一样复制目标文件
      3. git merge 提交丢失的目标文件。

      现在好像解决了,错误不再出现。

      【讨论】:

        猜你喜欢
        • 2018-11-01
        • 2018-11-17
        • 2011-05-12
        • 2019-02-25
        • 2020-06-18
        • 2021-09-14
        • 2016-07-19
        • 2017-07-02
        • 2018-04-17
        相关资源
        最近更新 更多