在OS X上使用Git版本2.2.0和统一游戏引擎,并且想要提交我的代码。我添加了所有内容,但未收到错误消息。然后提交-m,并收到此错误消息:
fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'
没有注意到我推了,没有给出错误信息,实际上是Everything up-to-date
所以我检查了bitbucket(举行回购的地方)并没有显示我的提交。所以我检查了我的本地日志,但也没有显示我的提交。
我看了谷歌的答案......什么都没有。这个错误是什么?我该如何解决?
答案 0 :(得分:379)
grant more up-to-date answer中提到了第一个与最近版本的Git(2.3 +,Q2 + 2015)兼容的解决方法:
删除索引
$ rm .git/index
全部添加
$ git add -A
提交
$ git commit -a
原始答案(2014年末)
通常的解决方法是:
将第一个回购的更改添加到第二个回复:
$ cd /patH/to/second/cloned/repo
$ git --work-tree=/path/to/first/repo add .
您可以在read-cache.c
中看到此错误消息,在此修补程序(" read-cache.c
: Ensure unmerged entries are removed")中进行了讨论,并在Git 2.2 commit中进行了介绍。
由于这是最近的,有可能降级 Git到2.1就足以不受该补丁的影响。
OP Daniel Toebe添加in the comments:
这个问题发生在我的macbook上,它决定对我失败,另一个计算机事故让我在我的项目上落后。
答案 1 :(得分:165)
我相信我遇到了这个问题,因为我添加并提交了更改,然后删除了我刚刚提交的文件。如果这听起来与您的情况类似,我建议您按照以下步骤保存重新克隆并手动添加更改。
我能够通过删除我的存储库中的.git / index文件来修复此问题,类似于@slider建议的内容(我相信他输错了路径)。
rm .git/index
然后我不得不再次添加并提交我的本地更改
git add -A
git commit -m "..."
然后我能够远程推送。
什么是git索引以及它是如何相关的?
What’s The Deal With The Git Index?
git“index”是您要将文件放置到git存储库的位置。
在“提交”(签入)文件到git存储库之前,需要先将文件放在git“index”中。
我相信通过删除这个文件,git会重新索引repo,创建一个新文件,你就可以了。它解决了这个问题,因为本地存储库被重新编入索引而没有我删除的文件引起了所有的麻烦。
编辑:看起来这与Mac有关(基于评论)所以如果它有助于我通过brew安装OSX 10.10和git版本2.3.4。
答案 2 :(得分:118)
rm .git/index
git reset
删除索引后,您需要通过git reset
重新创建它转到主项目文件夹
rm .git/modules/your_project_structure/index
git reset --hard HEAD
答案 3 :(得分:29)
您可以从项目中删除Git索引文件。在项目的根目录中,运行以下命令:
rm .git/index
那个git之后就可以了。
答案 4 :(得分:3)
我尝试了不同的解决方案,它对我有用。以下是我的选择
#cd .git
#rm index
#cd ..
#git add .
答案 5 :(得分:1)
索引文件位于父.git
目录中:
.git/modules/your_project_structure/index
在子模块中,没有名为.git
的目录(至少在我正在处理的项目中),只有一个.git
文件告诉你(和git)在哪里查找该项目的git目录。
删除索引文件并执行git reset
后,我发现自己面临着许多无法解释的变化,硬重置并没有帮助。
警告您将丢失所有更改,因此请在继续之前提交并推送。
索引似乎已损坏,因此我使用以下命令将其删除。
git rm -rf --cached .
git reset --hard HEAD
答案 6 :(得分:0)
我刚刚使用Github Desktop Client(OSX)出现此错误。我所做的只是退出应用程序并重新打开然后它开始工作。