152

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

app.coffee: needs merge
unable to refresh index

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

固定的!

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

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

4

11 回答 11

88

首先,检查git status.
正如OP提到的,

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

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

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


解决方案:在这种情况下,只需添加并提交您的本地文件。


您可以在 4 天前在撰写此答案时(2012 年 3 月 13 日)通过以下帖子找到类似的情况:“ 'Pull is not possible because you have unmerged files'</a>”:

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 中中止合并”。

这是你的两个选择。

于 2012-03-17T11:52:11.770 回答
29

这是我解决问题的方法:

  • git status(查看来自先前存储、拉取、存储弹出和继续工作的混合文件。)
  • git stash(参见需求合并问题)
  • 混帐添加。(添加文件,以便我的工作在本地解决我自己的合并)
  • git stash(没有错误)
  • git pull(没有错误)
  • git stash pop(没有错误并继续工作)
于 2019-06-24T22:29:42.097 回答
15

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

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

于 2016-04-12T09:56:01.337 回答
13

它比公认的答案简单得多。你需要:

  1. 在它下面检查git status和未合并的路径。修复冲突。如果您想稍后再做,可以跳过此步骤。

  2. 在未合并的路径下添加所有这些文件以使用git add <filename>.

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

于 2018-02-22T10:56:00.737 回答
5

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

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
于 2015-02-25T09:15:13.947 回答
5

好吧,最初,我们应该知道错误的根源,然后解决方案将变得容易。接受的答案已经指出了原因,但它在某种程度上是不完整的(也是解决方案)。

问题是,一个或多个文件之前有冲突,Git 仍然认为它们未解决。尽管您可能已经编辑了这些文件并解决了冲突,但 Git 并不知道。

在这种情况下,您应该通知 Git:“嘿,之前的合并没有冲突!”。请注意,合并不一定是由 a 引起的git merge,也可能是由 a 引起的git stash pop,例如。

一般来说,git status可以告诉你 Git 现在知道什么。如果 Git 有一些未解决的合并冲突,它会显示在一个单独的Unmerged paths部分中,文件标记为both modified(总是?)。如果您已经注意到,此部分介于两个暂存部分和未暂存部分之间。这意味着,未合并的路径是您应该移动到暂存区域或未暂存区域的路径,因为 Git 只能使用这两个.

即使在最新版本的 Git 中,当你执行 a 时git status,它也会告诉你怎么做(哇!你应该问问自己你是怎么还没见过这个的):

$ git status
...
Unmerged paths:
  (use "git restore --staged <file>..." to unstage)
  (use "git add <file>..." to mark resolution)
        both modified:   path/to/file.txt
...

因此,要上演它(并可能提交它):

git add path/to/file.txt

并使其不分阶段(例如,您现在不想提交):

git restore --staged path/to/file.txt

注意:在没有使用好的文本编辑器或 IDE 的情况下,忘记写--staged选项可能会产生一条超级饥饿的龙来吃掉你过去的两天。

注意:虽然git restore命令是实验性的,但它应该足够稳定以供使用(感谢@VonC 的评论,请参阅它以获取更多详细信息)。

于 2020-09-12T09:03:39.120 回答
2

git reset如果您不想提交这些更改。

于 2021-01-21T04:38:14.200 回答
1

我发现最好的解决方案是分支你的存储并在之后做一个解决方案。

git stash branch <branch-name>

如果你清除你的存储,你可能会丢失你的更改,你将不得不重新访问 reflog。

于 2018-06-11T12:08:30.310 回答
1

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

这样做git add app.coffee,然后您将能够应用您的存储(在提交和推送之后)。

于 2019-05-27T13:59:25.200 回答
1

我遇到了同样的问题,因为我在开发分支中做了一些更改,然后想要转到配置文件分支。所以我已经通过

git stash

然后在配置文件分支中,我也做了一些更改,然后想再次回到开发中,所以我必须再次隐藏更改

 git stash

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

git stash apply

所以我收到错误需要合并

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

git stash list

所以它在我的情况下显示了存储列表,有 2 个存储,存储的名称显示如下stash@{0},stash@{1}

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

git stash apply stash@{1}

所以得到错误需要合并

所以现在要解决这个问题,检查你的文件的状态

git status

所以它给出了“都修改”的错误,所以要解决这个运行

git add .

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

git status 

所以现在没有错误现在可以应用存储

git stash apply stash@{1}

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

于 2020-07-01T04:26:48.047 回答
0

存储已应用于其他文件。

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

git 重置

取消更改并继续进行黑客攻击。

于 2019-10-11T06:00:26.540 回答