致命错误: git-write-tree: 构建树时出错

21

我正在尝试使用git-svn将一个大的Subversion存储库导入到git中(这样我可以在git中工作,但仍然可以不时地向Subversion提交)。 在导入超过4000个修订版本后,每当我运行git svn fetchgit svn rebase时,我都会遇到以下错误,但我无法摆脱:

$ git svn fetch
error: invalid object 100644 1f2....742 for 'src/path/.../file.cs'
fatal: git-write-tree: error building trees
write-tree: command returned error: 128

目前我的尝试:

  • git fsck --full 没有报告任何问题,git fsck --unreachablegit fsck --no-reflog 也没有
  • git gc --aggressive 没有帮助
  • 将单个包文件移走并使用 git unpack-objects 重新导入也没有帮助
  • git svn reset -rXY ,其中 XY 稍微低于最新导入的版本,也似乎没有帮助,手动从 reflog 中删除最新的记录直到 XY 也不行。
  • 重启。听起来很傻,但在导入前约4000个修订版本时我确实遇到了一些奇怪的问题,好像某些东西正在大量泄漏内核资源(很可能是在Windows子系统中),可能与msys / mingw有关(或者与禁用了以进行测试的avira病毒扫描器有关)。

我也没有找到错误128真正代表什么。有什么想法吗?提前致谢!

可能与这个问题有关,该问题也涉及错误128,但具有不同的错误消息,并且没有解决方案。

msysgit版本为1.6.4.msysgit.0,在xp sp3上使用bash


1
请在 Git 邮件列表 (git@vger.kernel.org) 上提问,您无需订阅即可发布问题(还有一些网络界面可供阅读,包括 Gmane 和 MARC)。 - Jakub Narębski
2个回答

44

git svn gc

(可能需要先运行 git gcgit prune)


谢谢,这个可行!不知道gc/prune是否必要,我通常都会做。 - Tobu
我曾经遇到过这个问题。只运行 git svn gc 而不运行 git gcgit prune 就解决了我的问题。 - thakis
git gc 对我解决了这个问题,而 git svn gc 在 msysgit 上还不可行。 - prusswan

5

简短回答:尝试解决合并冲突,提交后再次获取/拉取。

详细解释:我猜测您已经解决了这个问题,因为这篇文章发布得很久了。我写这篇文章是因为谷歌对StackOverflow文章的排名足够高,如果其他人遇到此问题,则很可能会访问此页面。

当我尝试进行“git stash”时,也遇到了类似的错误,问题在于在拉取后发生了合并冲突。我没有解决和提交冲突,这使得仓库处于一种状态,无法进行拉取/合并等操作。

如果确保没有任何阻塞文件,请再试一次。

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接