在git中获取多个阶段条目的致命错误

在OS X上使用Git版本2.2.0与统一的游戏引擎,并想提交我的代码。 我添加了一切,并没有得到一个错误消息。 然后提交-m,并得到这个错误信息:

fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources' 

没有注意到我推,没有给出错误信息,事实上说, Everything up-to-date所以我检查了bitbucket(回购被举行),并没有显示我的承诺。 所以我检查了我的本地日志,也没有显示我的提交。

我已经看着谷歌的答案…没有。 这个错误是什么? 我该如何解决?

第一个解决方法,似乎与Git(2.3 +,Q2 + 2015)的最新版本一起工作,在grant的更新的答案中提到:

  1. 删除索引

     $ rm .git/index 
  2. 全部添加

     $ git add -A 
  3. 承诺

     $ git commit -a 

原始答案(2014年末)
通常的解决方法是:

  • 再次将远程回购克隆到新的本地回购
  • 将第一个回购的更改添加到第二个回购:

     $ cd /patH/to/second/cloned/repo $ git --work-tree=/path/to/first/repo add . 

你可以在read-cache.c看到这个错误消息,在这个补丁中讨论(“ read-cache.c :确保read-cache.c条目被删除 ”),并在Git 2.2提交中被引入。
由于这是如此之近,所以 Git 降级到2.1就足以不受该补丁的影响。

OP Daniel Toebe 在评论中补充道:

这个问题发生在我的MacBook上,后者决定让我失望,另一台计算机事故让我的项目落后了。

我相信我遇到了这个问题,因为我添加并提交了更改,然后删除了我刚刚提交的文件。 如果这听起来与您的情况相似,那么我build议您按照以下说明保存重新克隆并手动添加更改。

我可以通过删除存储库中的.git / index文件来解决这个问题,类似于@slider的build议(我相信他错误地input了path)。

 rm .git/index 

然后我不得不再次添加和提交我的本地更改

 git add -A git commit -m "..." 

那时我能够远程推送。

什么是git索引,它是如何相关的?

什么是Git索引的交易?

git“index”是你放置你想要提交给git仓库的文件的地方。

在“提交”(签入)文件到git仓库之前,你需要首先将这些文件放在git“index”中。

我相信通过删除这个文件,git会重新编制索引,创build一个新的文件,而且你很好。 它解决了这个问题,因为本地存储库被重新编入索引而没有删除导致所有大惊小怪的文件。

编辑:这似乎是这个Mac相关(基于评论),所以如果它有帮助,我在OSX 10.10和git 2.3.4安装通过brew。

 rm .git/index git reset 

在删除索引之后,你需要通过git reset重新创build它

你可以从你的项目中删除Git索引文件。 在项目的根目录中,运行以下命令:

 rm .git/index 

之后,混帐工作。

我尝试了一种不同的解决scheme,它适用于我。 以下是我的select

 #cd .git #rm index #cd .. #git add . 

如果这发生在子模块中

索引文件位于父.git目录中:

 .git/modules/your_project_structure/index 

在子模块中,没有名为.git (至less在我正在处理的项目中),只有一个.git文件告诉你(和git)在哪里寻找该项目的git目录。

Git状态显示我没有做的改变

删除索引文件,并做一个git reset ,我发现自己面临着莫名其妙的变化和硬重置没有帮助。

警告您将失去所有更改,因此在继续之前提交并推送。

索引似乎损坏,所以我用下面的命令删除它。

 git rm -rf --cached . git reset --hard HEAD 

我刚刚得到了Github桌面客户端(OSX)的这个错误。 我所做的只是退出应用程序并重新打开,然后开始工作。