我的存储库中存在子树问题。我可以拉得很好,但是当试图推动它突然间,最后告诉我这个:
fatal: bad object 9775d8fba16f51e14cba873f78129d3d166f5888
我在.git
文件夹中进行了一些搜索,发现了这个:
.git/subtree-cache/81555/549ffeaa00e89a145f24ccdb0735c07d8d84b2ff
1:9775d8fba16f51e14cba873f78129d3d166f5888
提交549ffeaa00e89a145f24ccdb0735c07d8d84b2ff
是一个较旧的提交,我在那里拉了子树。拉动是一个壁球(这是项目的偏好),当时没有问题。
查看提交本身,我看到了:
git-subtree-split: 9775d8fba16f51e14cba873f78129d3d166f5888
哪个坏对象导致我的问题。这是我能找到的这个哈希的唯一引用。 git show 9775d8fba16f51e14cba873f78129d3d166f5888
报告错误对象并搜索.git
文件夹仅显示上面的提交。所以在我看来,这是唯一记录哈希值的地方。
有没有办法以某种方式剔除这个引用,让我再次推?我已经尝试清理回购,重新克隆,从我的回购中删除子树并重新拉出它。似乎没有什么可以删除引用,所以我猜这里有一个更深层次的问题。
答案 0 :(得分:3)
我最终找到了解决此错误的方法。它可能略微迂回但它确实有这个诀窍:
git subtree split
和--ignore-joins
选项进行了新的--rejoin
。 这似乎通过在应用程序中创建一个“新”子树来解决问题,该子树不包含带有无效引用的提交。
希望如果其他人看到同样的问题,这可能会帮助他们解决问题。 :)