在OS X上使用Git 2.2.0版本和unity游戏引擎,并想提交我的代码。我添加了所有内容,没有得到错误消息。然后提交-m,得到如下错误信息:
fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'
没有注意到,我按了,没有给出错误信息,事实上,说一切最新
所以我检查了bitbucket(回购所在的地方),它没有显示我的提交。所以我检查了我的本地日志,也没有显示我的提交。
我调查了谷歌寻找答案…和什么都没有。这个错误是什么?我该怎么解决呢?
我相信我遇到了这个问题,因为我添加并提交了更改,然后删除了我刚刚提交的文件。如果这听起来与您的情况类似,我建议您按照下面的步骤来避免重新克隆和手动添加更改。
我能够通过删除存储库中的.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。
如果这发生在子模块中
索引文件位于父目录。git中:
.git/modules/your_project_structure/index
在子模块中,没有名为.git的目录(至少在我正在工作的项目中),只有一个.git文件告诉你(和git)在哪里查找该项目的git目录。
Git状态显示了我没有做的更改
在删除索引文件并进行git重置之后,我发现自己面临着许多难以解释的变化,而硬重置并没有帮助。
警告您将丢失所有更改,因此请提交并在继续之前执行。
索引似乎已损坏,因此我使用以下命令删除了它。
git rm -rf --cached .
git reset --hard HEAD