在OS X上使用Git 2.2.0版本和unity游戏引擎,并想提交我的代码。我添加了所有内容,没有得到错误消息。然后提交-m,得到如下错误信息:

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

没有注意到,我按了,没有给出错误信息,事实上,说一切最新 所以我检查了bitbucket(回购所在的地方),它没有显示我的提交。所以我检查了我的本地日志,也没有显示我的提交。

我调查了谷歌寻找答案…和什么都没有。这个错误是什么?我该怎么解决呢?


第一个解决方案,似乎适用于最新版本的Git (2.3+, Q2+ 2015),在grant的最新答案中提到:

删除索引 $ rm .git/index 添加所有 $ git添加 提交 $ git提交


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

再次克隆远程回购到一个新的本地回购 将第一个repo的更改添加到第二个repo: $ cd /patH/to/second/clone /repo $ git——work-tree=/path/to/first/repo add。

您可以在这个补丁中讨论的read-cache.c中看到这个错误消息(“read-cache.c: Ensure unmerge entries are removed”),并在Git 2.2提交中引入。 由于这是最近的事情,所以有可能将Git降级到2.1就足以不受该补丁的影响。

OP Daniel Toebe在评论中补充道:

这个问题发生在我的macbook上,它决定在我身上失败,而另一个电脑故障使我远远落后于我的项目。


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

rm .git/index

之后,让它工作。


我相信我遇到了这个问题,因为我添加并提交了更改,然后删除了我刚刚提交的文件。如果这听起来与您的情况类似,我建议您按照下面的步骤来避免重新克隆和手动添加更改。

我能够通过删除存储库中的.git/index文件来修复这个问题,类似于@slider所建议的(我认为他输入了错误的路径)。

rm .git/index

然后我必须再次添加并提交我的本地更改

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

然后我就可以远程操作了。

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

Git指数是怎么回事?

git“索引”是你放置想要提交到git存储库的文件的地方。 在你“提交”(签入)文件到git存储库之前,你需要首先将文件放在git“索引”中。

我相信通过删除这个文件,git会重新索引这个repo,创建一个新的repo,然后就可以开始了。它解决了这个问题,因为本地存储库在没有我删除的文件的情况下重新建立了索引。

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


为项目

rm .git/index
git reset

删除索引后,你需要通过git重置重新创建它

子模块:

转到主项目文件夹

rm .git/modules/your_project_structure/index
git reset --hard HEAD

我尝试了一种不同的解决方法,对我来说很有效。下面是我的选项

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

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


如果这发生在子模块中

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

.git/modules/your_project_structure/index

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

Git状态显示了我没有做的更改

在删除索引文件并进行git重置之后,我发现自己面临着许多难以解释的变化,而硬重置并没有帮助。

警告您将丢失所有更改,因此请提交并在继续之前执行。

索引似乎已损坏,因此我使用以下命令删除了它。

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