我无法弹出我的存储,因为我合并了一个显然与我的存储冲突的分支,现在我的存储似乎无法弹出。
app.coffee: needs merge
unable to refresh index
有谁知道如何解决这个问题?
固定的!
事实证明,实际问题是合并中未解决的合并冲突,而不是存储会导致合并冲突。
解决方案:提交冲突的文件。
首先,检查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 中中止合并”。
这是你的两个选择。
这是我解决问题的方法:
我遇到了这个问题,然后解决了冲突并提交,然后git stash pop
再次恢复相同的存储(导致相同的冲突 :-( )。
我必须做的(警告:首先备份你的存储)是git stash drop
摆脱它。
它比公认的答案简单得多。你需要:
在它下面检查git status
和未合并的路径。修复冲突。如果您想稍后再做,可以跳过此步骤。
在未合并的路径下添加所有这些文件以使用git add <filename>
.
现在做git stash pop
。如果您遇到任何冲突,这些将再次需要解决。
如果有人在合并/冲突/操作之外遇到此问题,则可能是您的项目的 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
好吧,最初,我们应该知道错误的根源,然后解决方案将变得容易。接受的答案已经指出了原因,但它在某种程度上是不完整的(也是解决方案)。
问题是,一个或多个文件之前有冲突,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 的评论,请参阅它以获取更多详细信息)。
git reset
如果您不想提交这些更改。
我发现最好的解决方案是分支你的存储并在之后做一个解决方案。
git stash branch <branch-name>
如果你清除你的存储,你可能会丢失你的更改,你将不得不重新访问 reflog。
您需要添加app.coffee
到暂存。
这样做git add app.coffee
,然后您将能够应用您的存储(在提交和推送之后)。
我遇到了同样的问题,因为我在开发分支中做了一些更改,然后想要转到配置文件分支。所以我已经通过
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}
您可以对任意数量的存储文件执行此过程。
存储已应用于其他文件。
只是app.coffee
您必须手动合并。之后就跑
git 重置
取消更改并继续进行黑客攻击。