Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git提交已停止工作-生成树时出错_Git - Fatal编程技术网

git提交已停止工作-生成树时出错

git提交已停止工作-生成树时出错,git,Git,我无法提交更改: $ 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 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 prune
error: Could not read 1394dce6fd1ad15a70b2f2623509082007dc5b6c
fatal: bad tree object 1394dce6fd1ad15a70b2f2623509082007dc5b6c
$ git fsck | grep 13da
missing blob 13da9eeff5a9150cf2135aaed4d2e337f97b8114

但没有任何帮助。我应该删除文件、提交并重新引入吗?如果它使git commit恢复正常,我愿意丢失一点历史记录。

git reset--hard会使您的存储库恢复正常,但您将丢失未提交的更改。

您的git存储库中可能有一个损坏的对象

如果您有此存储库的远程或其他克隆,您可以从那里获取有问题的文件,并将其替换到本地repo上

您想要的文件将位于:

/repo/.git/objects/13/da9eeff5a9150cf2135aaed4d2e337f97b8114

如果您的更改正在添加有问题的文件,您可以将其从索引中删除,然后再次添加:

git reset <file> 
git add <file>
git重置
git添加

对我来说,这只是权限问题。当我使用
sudo
运行时,它工作正常。也许与mac环境有关

在我的例子中,是远程分支中的文件被破坏了。 我通过以下方式解决了这个问题:

git reset --mixed
  • 通过
    $git remote rm origin
  • 再次添加遥控器:
    $git remote add origin
  • 再次提取遥控器:
    $git提取原点
  • 将源代码上的硬重设为所需的分支(例如,
    develope
    ):
    $git reset——硬源代码/develope

  • 然后一切都会恢复正常。

    简易解决方案,如果您对文件的跟踪不太关心,您可以复制文件并删除原始文件,首先提交删除和添加,然后再次重命名为原始文件


    Git应该正常重新构建

    此错误意味着您有一个哈希值为13da9eeff5a9150cf2135aaed4d2e337f97b8114的文件,
    .Git/objects/./
    中不存在此哈希值,或者该哈希值为空。发生此错误时,错误中只有此哈希,没有文件路径。然后我尝试执行
    git-gc--auto
    git-reset--hard
    。在执行了其中一个命令(这些命令没有解决我的问题)之后,我得到了触发错误的文件路径

    您只需要生成对象哈希:

    git hash-object -w spec/routing/splits_routing_spec.rb
    
    有关更多信息,请参阅。在文档中,还有另外一种修复此错误的方法

    附言。
    这是唯一对我有帮助的方法。

    这可能是由Dropbox和建国云等第三方同步应用程序造成的。根据我的经验,可能有两种方法:

  • 您可以尝试撤消最近的同步操作
  • 从文件夹中删除相关文件,提交,然后移回文件

  • 在我的例子中,这是由于git的不同版本。我一直通过git的官方Windows端口使用我的存储库,并开始使用具有相同版本号的MinGW端口


    我在尝试使用mingwgit提交时开始遇到这个问题。切换回windows Git解决了这个问题

    就我而言,我通过以下方式解决了这个问题:

    git reset --mixed
    

    $git重置-硬给致命:无法读取树2287adf1b2a974541ce5806abc23dbd79814d666可能会有帮助。+1重置-我很努力。我的问题是谷歌硬盘在多台机器上同步我的本地代码-你必须记住停止并重新启动它,让它同步。我认为GoogleDrive必须故意忽略监控。git目录是导致大量更改的原因。请小心。使用此命令将放弃未限制的更改。您确实有系统的备份,不是吗?你不能从其中恢复吗?@JonathanLeffler,不管他是否恢复,都不会影响如何修复git的答案。如果你的磁盘驱动器中现在缺少该文件,这就不起作用了;因为没有要重置的物理文件,所以您会得到一个
    fatal:不明确的参数'path/to/file.ext':工作树中没有未知的修订或路径。
    message在我的情况下,引用的文件不再位于.git objects文件夹中!>。确切地说:您希望在repo的其他克隆中查找它,因为它可能存在,但由于I/O错误,它也有相同的问题。我无法替换该文件,但我删除了整个文件夹(在给定的示例中为
    /local/.git/objects/13/
    ),并从远程repo复制了一份副本。它成功了,一切又恢复了!感谢@AlexNikulin给出的下面的答案是一个更好的解决方案:
    git hash object-w spec/routing/splits\u routing\u spec.rb
    我否决了这个答案,因为
    git hash object-w
    对我来说工作得更好。sudo有点过于宽容,但确实是一个权限问题。通过将整个文件夹的所有权恢复给适当的用户来修复它。为我工作--谢谢abd,清空文件夹,提交,然后替换文件,提交Brilliant,谢谢你。救了我很多藏品不至于完全丢失。我更新了您的答案,以使用OP中的特定文件和路径。我这样做了,它也可以工作,但错误会在下次我尝试提交时再次出现,任何永久解决方案?@notsobaby可能是您的硬盘的问题。您的元文件因某些进程或硬件问题而损坏。这工作正常,应该是可以接受的答案