Git存储弹出-需要合并,无法刷新索引


116

我无法弹出存储卡,因为我合并了一个显然与存储卡冲突的分支,现在似乎无法弹出存储卡。

app.coffee: needs merge
unable to refresh index

有人知道如何解决这个问题吗?

固定!

事实证明,实际问题是合并中未解决的合并冲突,而不是隐藏会导致合并冲突。

解决方法:提交冲突的文件。


6
有趣的是,可接受的答案很复杂,而实际解决方案却很容易:您甚至不必提交冲突的文件,而只需添加即可。
哈维五世2015年

3
将您的答案添加为不在问题中的答案。
黑色

Answers:


67

首先,检查git status
正如OP所述,

实际的问题是合并中未解决的合并冲突,而不是隐藏会导致合并冲突。

那就是git status那个文件被称为“ both modified”的地方

解决方法:提交冲突的文件。


4天前通过此信息撰写此答案(2012年3月13日)时会发现类似的情况:“ '无法拉出,因为您具有未合并的文件' ”:

julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index

您要做的是解决合并冲突(编辑正确的文件,然后提交):
请参阅“ 如何解决Git中的合并冲突?

该博客文章的作者所做的是:

julita@yulys:~/GNOME/baobab/help/C$ git reset --hard origin/mallard-documentation
HEAD is now at ff2e1e2 Add more steps for optional information for scanning.

即完全中止当前合并,从而允许git stash pop应用。
请参阅“ 中止Git中的合并 ”。

这些是您的两个选择。


1
有时也发生在另一个分支。例如,我拥有分支A并进行了一些更改,然后切换到分支B进行了更改并提交了它们。现在我想去分支A,但是忘了在A上结帐并尝试应用存储。在这种情况下,也会出现相同的问题。在上述情况下,我遇到了这个问题。
卡皮尔·维尔玛,2017年

除了“ git bash pop”带回了那些冲突之外,我全力以赴。我不知道为什么当我不想对当前的bach进行更改时,为什么还是必须提交。我只想回到隐蔽的分支。
菲利普·雷哥

@PhilipRego git bash pop?还是git stash pop?尝试检查存储区,而不是使用git存储区:stackoverflow.com/a/16625128/6309
VonC

抱歉意思是“ git stash pop”。我已经放下了藏匿处,但是下次我遇到这个问题时,我会尝试。谢谢
菲利普·雷哥

14

我遇到了这个问题,然后解决了冲突并提交了,然后git stash pop再次做是再次恢复了相同的存储(导致相同的冲突:-()。

我要做的(警告:首先备份您的存储)是git stash drop摆脱它。


4
那只是摆脱了我的藏身之地。我想回到它。
菲利普·雷哥

3
这是我需要的答案,但是对于其他看到此问题的人,您将失去自己的秘密更改。如果您在第一个存储区方面遇到问题,但是确实想摆脱第一个存储区以应用更深层次的第二个隐藏存储区更改,这将很有帮助。
科里·史奈德

8

它比接受的答案简单得多。你需要:

  1. 检查git status和取消合并路径。解决冲突。如果您以后愿意,可以跳过此步骤。

  2. 将所有这些文件添加到未合并的路径下,以使用进行索引git add <filename>

  3. 现在做git stash pop。如果遇到任何冲突,将再次需要解决。


6
这一次又一次导致相同的冲突。
NaN

7

这是我解决问题的方法:

  • git status(查看以前存储,拉动,存储弹出和继续工作的文件混合)。
  • git stash(请参阅需求合并问题)
  • git添加 (添加文件,以便我的工作在本地解决我自己合并的文件)
  • git stash(无错误)
  • git pull(没有错误)
  • git stash pop(没有错误,然后继续工作)

1
谢谢 !这对我有帮助。
朱利安·鲍迪

1
太好了,git add .无需提交即可为我解决问题。
保罗·卡尔顿

5

如果有人在合并/冲突/操作之外遇到此问题,则可能是导致该问题的项目的git锁定文件。

git reset
     fatal: Unable to create '/PATH_TO_PROJECT/.git/index.lock': File exists.
rm -f /PATH_TO_PROJECT/.git/index.lock
git reset
git stash pop

1
有点怕reset命令。你能解释为什么这行得通吗?
SMBiggs

1

我发现最好的解决方案是分拆藏匿处,然后再解决。

git stash branch <branch-name>

如果您清除存储空间,则可能会丢失所做的更改,因此必须重新阅读reflog。


1

您需要添加app.coffee到暂存。

这样做git add app.coffee,您便可以应用存储(在提交和推送之后)。


0

该存储已被应用于其他文件。

只是app.coffee您必须手动合并。之后就跑

git重置

取消变更并继续进行黑客入侵。


0

我遇到了同样的问题,因为我在我的开发分支中做了一些更改,然后想转到个人档案分支。所以我把改变藏起来了

git stash

然后在配置文件分支中,我也做了一些更改,然后想再次回到开发中,因此我必须再次存储更改

 git stash

但是当我来开发分支并尝试通过git隐藏存储更改时

git stash apply

所以我收到错误需要合并

首先要解决此问题,我必须通过以下方式检查存储列表

git stash list

因此,在我的案例中,它显示了存储的列表,其中有2个存储,存储名称显示为以下存储@ {0},存储@ {1}

我需要从stash @ {1}进行更改,因此当我尝试通过此命令获取它时

git stash apply stash@{1}

所以得到错误需要合并

所以现在要解决此问题,请检查文件的状态

git status

因此给出了“两者都已修改”的错误,因此可以解决此问题

git add .

它将添加丢失的修改文件,现在再次检查状态

git status 

所以现在没有错误,现在可以应用隐藏

git stash apply stash@{1}

您可以对任意数量的隐藏文件执行此过程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.