【发布时间】:2010-11-01 23:27:13
【问题描述】:
当我做了一个 git svn rebase 时,它停在了一个地方说:
Index mismatch: SHA key of a tree != SHA key of another tree.(我知道这些 SHA 键对应于一棵树,而不是来自 git show 的上述两个 sha 键的提交。)
re-reading <sha index of a commit in svn/trunk>
... list of files ...
fatal: bad object <SHA1 index of the bad object>
rev-list -1 <SHA1 index of the bad object> --not <SHA1 index of the revision it was trying to re-read>: command returned error: 128
我对 git 的内部工作不是很有经验,所以有没有一系列步骤可以用来剖析这些问题并可能解决它们?
【问题讨论】:
-
首先想到我会尝试使用疑似损坏的存储库是
git fsck。 -
@Greg-Hewgill:感谢您的建议。我做了一个 git fsck ,它列出了一堆悬空的树、提交和 blob。我指的是 Git 用户手册中的这一部分:kernel.org/pub/software/scm/git/docs/… 并尝试弄清楚 repo 中发生了什么。幸运的是,几周前我存档了我的 .git 文件夹,以便我的同事启动并运行 repo。我使用它并创建了一个新的存储库并继续我的工作,同时我找出损坏的存储库发生了什么。
-
我能想到的唯一一件事是其他人可能在您之前重新设置了基础,从而更改了远程仓库的 SHA 密钥并给您现在看到的错误。如果您要拉出对树所做的更改,修复任何冲突,然后从那里变基,它可能会正常工作。
-
你只看到了悬空提交,没有丢失的提交?这是相当正常的——当使用
git add时,在变基和悬挂树时会创建悬挂提交——索引被维护为一棵树。 -
@g19fanatic 远程仓库是SVN仓库,SVN不支持历史重写,所以不太清楚你的意思
标签: git svn indexing git-svn rebase