Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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得到这个错误: 致命:索引文件小于预期值 致命:git状态--失败 知道发生了什么以及如何解决吗?索引文件已损坏,但很容易重新创建。把它拿走 rm .git/index 然后,您可以重新添加要暂存的文件。如果要保留本地更改,请使用以下命令: $ rm .git/index $ git reset HEAD . > Unstaged changes after reset: modified foo.txt modified bar.txt 对于那些在删

今天早上,我开始从git得到这个错误:

致命:索引文件小于预期值

致命:git状态--失败


知道发生了什么以及如何解决吗?

索引文件已损坏,但很容易重新创建。把它拿走

rm .git/index

然后,您可以重新添加要暂存的文件。

如果要保留本地更改,请使用以下命令:

$ rm .git/index
$ git reset HEAD .

> Unstaged changes after reset:
  modified foo.txt
  modified bar.txt

对于那些在删除索引后仍有ISSE且无法重置的用户。如果您想保留您的更改,请执行以下操作(不是一个解决方案,而是一个难看的解决方法!)

  • 备份你的文件,我要说的应该有用,但要以防万一
  • 删除.git文件夹
  • 克隆您的存储库(无论在何处)我在当前目录中进行了克隆
  • 将从clone.git目录创建的副本复制到当前目录中
  • 删除克隆的目录 6.可选,如果您再次使用分支签出对其进行签出
  • Git状态现在应该像预期的那样跟踪更改,并且所有Git命令都应该工作

  • 我的案例如上所述,git把它的参考资料搞砸了
    Git日志
    显示“您的分支似乎已断开”,并且
    Git fsck
    向我发出关于错误引用的警告。我想如果我可以修复它,但我会花很多时间去做,所以我选择了丑陋的解决方法。

    你试过这个吗?是的,我在发布之前试过。问题是我的子模块一直在破坏我的索引文件(不知道为什么)。@karellm你找到发生这种情况的原因了吗?不,老实说,我没有调查是什么原因造成的,它也停止了。提示:根据我的经验,这可能是由于NFS文件夹没有更新。如果您的repo位于NFS上,请稍等几分钟,然后再尝试更正问题。我是在从一台机器上提取数据,然后在另一台机器上检查状态后发生这种情况的,这两台机器都安装了相同的NFS。如上所述,由于与一个子模块的冲突,该子模块一次又一次地破坏了我的索引,所以无法工作。。。我删除了子模块,删除了索引并添加了全部。它终于奏效了。谢谢为什么会发生这种情况?在过去的两周里,我已经发生过两次这种情况,我看不出原因。这对我来说不起作用。在这个错误之前,我有一个基本上干净的工作副本。删除索引文件并运行
    git add.
    后,它的行为就好像每个文件都是新的,需要提交。当有子模块时也不起作用。只需重置(答案下方)。如果发现在运行此操作后,我必须执行
    git还原--staged
    ,它修复了git认为所有内容都需要重新提交的问题。不知道为什么会发生这种情况?在过去的两周里,这种情况发生在我身上大约4-5次。这个答案在这里是最好的。此外,如果您使用git子模块,请注意:同时删除这些索引文件(它们位于
    .git/modules/src
    )。这让我想知道为什么删除(主)索引文件后仍会发生错误。我猜这可能是由于标准原因、进程中途停止、磁盘空间不足等原因造成的。但在我的情况下,可能是我使用git文件夹的符号链接来创建用于构建svn外部的目录,虽然这很奇怪,因为这些回购协议上的唯一操作是只读的,用于硬重置构建文件夹。这对我很有帮助,谢谢。我的项目中有子模块;在克隆repo时,使用git clone--recurse submodules URL获取它们也很重要。