git提交停止工作 - 构建树时出错

109

我无法提交更改:

$ git commit
error: invalid object 100644 13da9eeff5a9150cf2135aaed4d2e337f97b8114 for 'spec/routing/splits_routing_spec.rb'
error: Error building trees

我迄今为止尝试过:

$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114

并且还有:

$ git prune
error: Could not read 1394dce6fd1ad15a70b2f2623509082007dc5b6c
fatal: bad tree object 1394dce6fd1ad15a70b2f2623509082007dc5b6c

还有:

$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114

但是没有任何帮助。我应该删除文件,提交并重新引入吗?如果这样做可以恢复git提交,我愿意失去一点历史记录。

18个回答

1

解决这个问题最简单的方法是:

  1. 复制未提交的文件。
  2. 然后使用 $ git reflog -1
  3. 使用 $ git reset --hard xxxxxx(xxxxx 是你最后一次提交的 head)
  4. 然后再粘贴你的文件。

这对我很有效,不需要克隆仓库或删除远程仓库。


0

在我的情况下,是远程分支中的文件出了问题。

我通过以下步骤解决了这个问题:

  1. 删除所有远程分支:$ git remote rm origin
  2. 重新添加远程分支:$ git remote add origin <the-remote-url>
  3. 再次获取远程分支:$ git fetch origin
  4. 将本地分支重置到所需的远程分支(例如,develop):$ git reset --hard origin/develop

然后一切都恢复正常了。


0
在我的情况下,这是由于不同版本的git。我一直在使用官方Windows端口的git来管理我的存储库,并开始使用相同版本号的MinGW端口。
当我尝试使用MinGW git提交时,我开始遇到这个问题。切换回Windows Git解决了这个问题。

0

我尝试了重置命令,除了将我的新更改保存到一边、删除所有内容并重新克隆(无论是在新区域还是相同区域,我都使用了相同的方法)和重新复制之外,没有任何效果。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

0

我也遇到过这个问题,我的解决方法是:将更改后的文件夹或文件复制到VSCode中的另一个项目中,然后删除该存储库并重新克隆,最后再将文件或文件夹传回原来的项目。虽然看起来有点麻烦,但我认为这样做可以确保您不会丢失尚未提交的文件。


0

这很简单,只需从远程仓库克隆到一个新文件夹,删除该新文件夹上的所有文件但保留 .git 文件夹。然后将旧文件夹中的所有文件复制到新克隆的文件夹中,但不要复制 .git 文件夹。


0

如果您使用OneDrive同步存储库,但以上解决方法均不起作用(git命令导致更多错误),可能是OneDrive应用程序中的错误。建议的解决方案(适用于我)是扫描和修复硬盘:

  1. 在“开始”菜单中搜索“命令提示符”
  2. 右键单击“命令提示符”>“以管理员身份运行”
  3. 输入命令chkdsk \r \f
  4. 如果chkdsk无法立即扫描和修复驱动器,它将要求在下一次重新启动时执行操作-确认您要扫描驱动器

-2
error: invalid object 100644 d5b87de7ffab13b0f9669abceae5c5193ac950ec for 'angular.json'
error: invalid object 100644 d5b87de7ffab13b0f9669abceae5c5193ac950ec for 'angular.json'
error: Error building trees

我遇到了这个问题。 以下是我如何解决的。

  • 我再次克隆了存储库(以获取“新鲜”的副本)
  • 我复制了整个.git文件夹从克隆的存储库
  • 删除了原始存储库中带有错误的.git文件夹
  • 将新的.git文件夹粘贴到原始存储库中

它有效了!

我希望这对其他人有所帮助!


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