我无法弹出我的藏匿处,因为我合并了一个显然与我的藏品冲突的分支,现在我的藏匿处似乎无法弹出。
app.coffee: needs merge
unable to refresh index
任何人都知道如何解决这个问题?
固定!
事实证明,实际问题是来自合并的未解决的合并冲突, NOT 存储会导致合并冲突。
解决方案:提交冲突的文件。
答案 0 :(得分:55)
首先,检查git status
正如OP提到的那样,
实际问题是来自合并的未解决的合并冲突,而不是存储会导致合并冲突。
这就是git status
将该文件称为“both modified
”
解决方案:提交冲突的文件。
你可以在4天前找到类似的情况在撰写本回答时(2012年3月13日),帖子有:“‘Pull is not possible because you have unmerged files’”:
julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index
你所做的是修复合并冲突(编辑正确的文件,并提交它):
请参阅“How do I fix merge conflicts in 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
被应用
请参阅“Aborting a merge in Git”。
这是你的两个选择。
答案 1 :(得分:13)
我遇到了这个问题,然后解决冲突并提交,再次执行git stash pop
再次恢复相同的存储(导致相同的冲突:-()。
我必须做的是git stash drop
摆脱它。
答案 2 :(得分:8)
它比接受的答案简单得多。你需要:
检查git status
及其下的未合并路径。修复冲突。如果您以后再做,可以跳过此步骤。
使用git add <filename>
将未合并路径下的所有这些文件添加到索引。
现在做git stash pop
。如果您遇到任何冲突,这些将再次需要解决。
答案 3 :(得分:3)
如果有人在合并/冲突/操作之外遇到此问题,那么它可能是导致问题的项目的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
答案 4 :(得分:2)
git reset
如果您不想提交这些更改。
答案 5 :(得分:1)
首先,我们应该知道导致错误发生的原因,然后解决方案将很容易。可接受的答案已经指出了原因,但是原因不完整(也是解决方案)。
问题是,一个或多个文件以前有冲突,但是Git认为它们没有解决。是的,您可能已经编辑了这些文件并解决了冲突,但是Git对此一无所知。您应该告诉Git“嘿,上一次合并不再有任何冲突!”。请注意,合并不一定由git merge
引起,例如,也由git stash pop
引起。
请记住,git status
可以告诉您Git现在知道什么。如果与Git有一些未解决的合并冲突,则会在单独的Unmerged paths
部分中显示,并将文件标记为both modified
(总是?)。如果您已经注意到,此部分位于两个暂存和未暂存的部分之间。由此,我个人理解:“未合并的路径是您应该进入已分阶段或未分阶段的区域,因为Git只能在这两个区域中使用。”
因此,要告诉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
注意:如果不使用好的文本编辑器或IDE,则忘记编写--staged
选项可能会产生一条超级饥饿的巨龙来吃掉您过去两天的食物。
注意:尽管git restore
命令尚处于试验阶段,它应该足够稳定才能被使用(由于@VonC的注释,有关该命令的更多详细信息,请参考它)。
答案 6 :(得分:0)
我发现最好的解决方案是分开你的存储并在之后做出解决方案。
git stash branch <branch-name>
如果你清除了你的藏品,你可能会丢失你的更改,你将不得不重新开始使用reflog。
答案 7 :(得分:0)
您需要将app.coffee
添加到登台。
执行git add app.coffee
,然后您将能够应用存储(在提交和推送之后)。
答案 8 :(得分:0)
这是我解决问题的方法:
答案 9 :(得分:0)
存储已被应用于其他文件。
您只需手动合并app.coffee
。之后,只需运行
git reset
取消更改并继续进行黑客攻击。
答案 10 :(得分:0)
我遇到了同样的问题,因为我在我的开发分支中做了一些更改,然后想转到个人档案分支。所以我将更改保存在
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}
您可以对任意数量的隐藏文件执行此过程。