我开了个藏宝箱,合并发生了冲突。与被列为重复的问题不同,我已经在我想保留的目录中有一些未提交的更改。我不只是想让合并冲突消失,还想让我的目录恢复到弹出窗口之前的状态。

我尝试了git合并-abort,但git声称没有合并正在进行中。是否有一种简单的方法来中止弹出,而不破坏我原来在目录中的更改?


当前回答

如果DavidG是正确的,它没有弹出隐藏,因为合并冲突,那么你只需要清理你的工作目录。赶快提交你关心的一切。(如果没有完成,可以稍后重置或压缩提交。)然后,你所关心的一切安全,git重置其他一切,git stash弹出转储到你的工作目录。

其他回答

使用git reflog列出在git历史中所做的所有更改。复制一个动作id,输入git reset ACTION_ID

我用不同的方法解决了这个问题。事情是这样的。

首先,我碰到了错误的分支,产生了冲突。存储仍然完好无损,但是索引在冲突解决中,阻塞了许多命令。

简单的git重置HEAD会中止冲突解决,并留下未提交(和不需要的)更改。

几个git co <filename>将索引恢复到初始状态。最后,我用git co <branch-name>切换了分支,并运行了一个新的git stash pop,解决了没有冲突的问题。

简单的一行

我总是用

Git重置—合并

我不记得它曾经失败过。


注意:git重置——合并将丢弃任何阶段性更改。此外,正如@Saroopashree Kumaraguru在评论中指出的那样,隐藏的内容不会丢失,以后可以重新应用。

尝试使用if跟踪文件。

git rm <path to file>
git reset  <path to file>
git checkout <path to file>

I'm posting here hoping that others my find my answer helpful. I had a similar problem when I tried to do a stash pop on a different branch than the one I had stashed from. On my case I had no files that were uncommitted or in the index but still got into the merge conflicts case (same case as @pid). As others pointed out previously, the failed git stash pop did indeed retain my stash, then A quick git reset HEAD plus going back to my original branch and doing the stash from there did resolve my problem.