我无法弹出我的stash,因为我合并了一个分支,这个分支显然与我的stash冲突,现在我的stash似乎无法被弹出。
app.coffee: needs merge
unable to refresh index
有人知道如何解决这个问题吗?
我无法弹出我的stash,因为我合并了一个分支,这个分支显然与我的stash冲突,现在我的stash似乎无法被弹出。
app.coffee: needs merge
unable to refresh index
有人知道如何解决这个问题吗?
首先,检查 git status
。
如 OP 所述,
实际问题是未解决的合并冲突,而不是储藏引起了合并冲突。
这时,git status
会将该文件标记为 "both modified
"
解决方法:提交有冲突的文件。
git add -- yourFile
,或者(如果您不想进行那些更改)git reset -- yourFile
(将其撤销)就足以通过错误消息。
如果您不想提交,只需使用git add yourFile
即可。git stash
命令隐藏剩余的更改。
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 add
单独使用就足够了。 - VonC以下是我解决问题的步骤:
这比接受的答案简单得多。您需要:
检查 git status
并查看其中未合并的路径。修复冲突。如果您愿意稍后再做,可以跳过此步骤。
使用 git add <filename>
将所有这些未合并路径下的文件添加到索引中。
现在执行 git stash pop
。如果有任何冲突,则需要再次解决这些冲突。
我遇到了这个问题,冲突解决并提交后,再次执行 git stash pop
时会恢复相同的存储(导致相同的冲突 :-( )。
我所做的(警告:首先备份您的储藏)是使用 git stash drop
来摆脱它。
首先,我们应该知道错误的根本原因,然后解决方案就会变得容易。虽然已经有答案指出了问题的原因,但它有些不完整(也不是解决方案)。
问题在于,一个或多个文件以前存在冲突,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锁定文件导致了该问题。
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
reset
命令。能否解释一下为什么这会起作用? - SMBiggsgit reset
如果你不想提交这些更改。
我遇到了同样的问题,因为我在开发分支上做了一些更改,然后想切换到个人资料分支。所以我通过stash命令来保存这些更改。
git stash
然后在个人资料分支中,我也做了一些更改,现在想要回到开发分支,所以我必须再次使用stash命令来保存更改:
git stash
git stash apply
我遇到了需要合并的错误
为了解决这个问题,首先我要检查存储列表:
git stash list
这段代码展示了我的存储列表,其中有两个存储,它们的名称显示为stash@{0}, stash@{1}
我需要从stash@{1}中进行更改,因此当我尝试使用此命令获取它时
git stash apply stash@{1}
所以出现了需要合并的错误
为了解决这个问题,请检查您的文件状态
git status
出现错误,指出“已修改”
为解决此问题,请运行以下指令。
git add .
它将添加丢失的修改过的文件 现在再次检查状态
git status
现在没有错误了,可以应用存储
git stash apply stash@{1}
您可以对任意数量的存储文件执行此过程。
你需要将 app.coffee
添加到暂存区。
执行 git add app.coffee
,然后你就可以应用你的存储(之后提交并推送)。
这个存储已经被应用到其他文件中了。
只有app.coffee
需要手动合并。之后只需运行
git reset
取消暂存更改并继续操作。