由于冲突无法“git stash pop”

rom*_*nsh 24 linux unix git command-line

我有一个本地 git 存储库并且有几个修改过的文件。然后我需要快速修复某些东西,所以我

  • 隐藏我的更改(git stash)
  • 编辑过的文件(vi 文件)
  • 提交(git commit)
  • 弹出存储(git stash pop)

这导致了冲突。

# On branch master
$ git stash pop
Auto-merging page/search.php
CONFLICT (content): Merge conflict in page/search.php
$ git status
# On branch master
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      page/search.php
Run Code Online (Sandbox Code Playgroud)

如果我尝试清理更改并重新应用存储,则会发生同样的事情(冲突)。我不太关心 page/search.php,但我想从 stash 中取出其他文件。

有没有办法将 stash 转换为补丁,或者只是获取隐藏时的文件?

use*_*686 23

stash 已经被应用到其他文件;只是page/search.php您必须手动合并。之后只需运行git reset以取消更改并继续进行黑客攻击 - 或者git add ...并提交。

  • 非常好,`git stash pop`,解决你的冲突,然后`git add x` 然后`git reset` 让它退出暂存,谢谢! (3认同)

rom*_*nsh 15

解决了:

git stash show -p
Run Code Online (Sandbox Code Playgroud)

  • 展示?-p ? 这是做什么的?“表演”如何与解决冲突相关? (3认同)
  • 此命令显示在 stash 中所做的更改,允许您手动合并 (2认同)
  • 我发现```git stash show -p | git apply &amp;&amp; git stash drop``` 来自 https://coderwall.com/p/anxp0g/force-a-git-stash-pop,我试图在运行它之前验证它是否有效。:-) (2认同)

小智 9

git stash pop命令之后,您必须git stash drop手动解决冲突,然后按照man git-stash建议手动执行。