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

我不能打开我的存货,因为我合并了一个分行,这显然与我的存货冲突,现在我的存货似乎无法打开。

app.coffee: needs merge
unable to refresh index

有人知道怎么解决吗?

修好了!

结果发现实际的问题是一个未解决的合并冲突,从合并,没有隐藏将导致一个合并冲突。

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

263435 次浏览

首先,检查 git status
正如《观察家报告》所言,

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

这就是 git status提到“ both modified”文件的地方

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


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

实际上,只需要 git add -- your file,或者(如果您不希望进行这些更改) git reset -- yourfile(卸载它)就足以通过错误消息。


你可以在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 中终止合并”。

这是你的两个选择。

如果任何人在合并/冲突/操作之外有这个问题,那么可能是您的项目的 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

我有这个问题,然后解决冲突和承诺,再次做 git stash pop是恢复相同的存货再次(造成相同的冲突: ()。

我必须做的(警告: 首先备份你的存货)是 git stash drop来处理掉它。

这比公认的答案要简单得多,你需要:

  1. 检查 git status和它下面的未合并路径。解决冲突。如果你想以后再做,你可以跳过这一步。

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

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

我发现最好的解决办法是把你的存货分开,然后再做决定。

git stash branch <branch-name>

如果你放弃清理你的存货,你可能会失去你的变化,你将不得不重新开始。

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

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

我是这样解决这个问题的:

  • Git status (参见以前的存储、提取、存储中的文件组合 然后继续工作。)
  • Git 存储(见需求合并问题)
  • (添加文件,这样我的工作就可以在本地解决我自己的合并问题)
  • Git 存储(无错误)
  • Git pull (无错误)
  • Git 存储弹出(没有错误,继续工作)

隐藏文件已经被应用到其他文件中。

只有 app.coffee需要手动合并,然后运行即可

基特复位

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

我正面临着同样的问题,因为我已经在我的开发分支中做了一些更改,然后想去分支的配置文件。所以我把零钱藏起来了

git stash

然后在配置文件分支我也做了一些变化,然后想回来再次开发,所以我必须再次隐藏的变化

 git stash

但是当我来开发 Branch 的时候,我试着把存货换成

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}

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

那么一开始我们要知道错误的根源,然后解决起来就容易了。原因已经被公认的答案指出,但是不完整(也是解决方案)。

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

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

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

即使在最近的 Git 版本中,当您执行 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

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

注意: 虽然 git restore命令还处于试验阶段,但它应该足够稳定,可以使用(感谢@VonC 的注释,请参考它以获得更多细节)。

如果您不想提交这些更改,请使用 git reset