删除无效的git-subtree-split哈希

时间:2014-12-22 23:27:07

标签: git git-subtree

我的存储库中存在子树问题。我可以拉得很好,但是当试图推动它突然间,最后告诉我这个:

fatal: bad object 9775d8fba16f51e14cba873f78129d3d166f5888

我在.git文件夹中进行了一些搜索,发现了这个:

.git/subtree-cache/81555/549ffeaa00e89a145f24ccdb0735c07d8d84b2ff
1:9775d8fba16f51e14cba873f78129d3d166f5888

提交549ffeaa00e89a145f24ccdb0735c07d8d84b2ff是一个较旧的提交,我在那里拉了子树。拉动是一个壁球(这是项目的偏好),当时没有问题。

查看提交本身,我看到了:

git-subtree-split: 9775d8fba16f51e14cba873f78129d3d166f5888

哪个坏对象导致我的问题。这是我能找到的这个哈希的唯一引用。 git show 9775d8fba16f51e14cba873f78129d3d166f5888报告错误对象并搜索.git文件夹仅显示上面的提交。所以在我看来,这是唯一记录哈希值的地方。

有没有办法以某种方式剔除这个引用,让我再次推?我已经尝试清理回购,重新克隆,从我的回购中删除子树并重新拉出它。似乎没有什么可以删除引用,所以我猜这里有一个更深层次的问题。

1 个答案:

答案 0 :(得分:3)

我最终找到了解决此错误的方法。它可能略微迂回但它确实有这个诀窍:

  1. 我使用git subtree split--ignore-joins选项进行了新的--rejoin
  2. 我把我的子树推到了遥控器上的一个新分支。
  3. 我将遥控器的主分支合并到我的新分支。
  4. 我将新分支合并回主人。
  5. 我把子树拉回了我的app项目。
  6. 这似乎通过在应用程序中创建一个“新”子树来解决问题,该子树不包含带有无效引用的提交。

    希望如果其他人看到同样的问题,这可能会帮助他们解决问题。 :)