本文翻译自:Undo git stash pop that results in merge conflict

I began making changes to my codebase, not realizing I was on an old topic branch. 我开始对我的代码库进行更改,但没有意识到我在旧主题分支上。 To transfer them, I wanted to stash them and then apply them to a new branch off of master. 为了转移它们,我想存放它们,然后将它们应用到master的新分支中。 I used git stash pop to transfer work-in-progress changes to this new branch, forgetting that I hadn't pulled new changes into master before creating the new branch. 我使用git stash pop将正在进行的更改转移到这个新分支,忘记了我在创建新分支之前并没有将新更改引入master。 This resulted in a bunch of merge conflicts and loss of a clean stash of my changes (since I used pop). 这导致了一堆合并冲突,并且丢失了我所做更改的干净存储(因为我使用了pop)。

Once I recreate the new branch correctly, how I can I recover my stashed changes to apply them properly? 正确重新创建新分支后,如何恢复已隐藏的更改以正确应用它们?


#1楼

参考:https://stackoom.com/question/1VB7Y/撤消git-stash-pop导致合并冲突


#2楼

As it turns out, Git is smart enough not to drop a stash if it doesn't apply cleanly. 事实证明,如果Git不能很好地应用,它足够聪明以至于不会丢下任何东西。 I was able to get to the desired state with the following steps: 我可以通过以下步骤达到所需的状态:

  1. To unstage the merge conflicts: git reset HEAD . 要取消合并冲突: git reset HEAD . (note the trailing dot) (注意尾随点)
  2. To save the conflicted merge (just in case): git stash 保存冲突的合并(以防万一): git stash
  3. To return to master: git checkout master 返回主git checkout mastergit checkout master
  4. To pull latest changes: git fetch upstream; git merge upstream/master 进行最新更改: git fetch upstream; git merge upstream/master git fetch upstream; git merge upstream/master
  5. To correct my new branch: git checkout new-branch; git rebase master 更正我的新分支: git checkout new-branch; git rebase master git checkout new-branch; git rebase master
  6. To apply the correct stashed changes (now 2nd on the stack): git stash apply stash@{1} 要应用正确的隐藏更改(现在是堆栈中的第二个更改): git stash apply stash@{1}

#3楼

Luckily git stash pop does not change the stash in the case of a conflict! 幸运的是git stash pop 改变藏匿在冲突的情况下!

So nothing, to worry about, just clean up your code and try it again. 因此,无需担心,只需清理代码并重试即可。

Say your codebase was clean before, you could go back to that state with: git checkout -f 假设您的代码库之前是干净的,则可以使用以下命令返回该状态: git checkout -f
Then do the stuff you forgot, eg git merge missing-branch 然后做您忘记的事情,例如git merge missing-branch
After that just fire git stash pop again and you get the same stash, that conflicted before. 之后,再次启动git stash pop ,您将获得相同的 stash,之前有所冲突。

Attention: The stash is safe, however, uncommitted changes in the working directory are not. 注意:存储是安全的,但是,工作目录中未提交的更改不是。 They can get messed up. 他们可能会搞砸。


#4楼

Instructions here are a little complicated so I'm going to offer something more straightforward: 这里的说明有点复杂,所以我将提供一些更简单的方法:

  1. git reset HEAD --hard Abandon all changes to the current branch git reset HEAD --hard放弃对当前分支的所有更改

  2. ... Perform intermediary work as necessary ...根据需要执行中介工作

  3. git stash pop Re-pop the stash again at a later date when you're ready git stash pop准备好以后再重新弹出存储

撤消git stash pop导致合并冲突相关推荐

  1. 执行git stash pop时的冲突解决

    git stash pop时的冲突解决 今天遇到一个问题,本来在主分支上checkout了一条新分支出来工作,可是做一半的时候突然发现后续要做的东西依赖于另一条特性分支里面的代码.特性分支其实是已经推 ...

  2. git stash pop冲突_这有一份 git 日常使用清单,你需要吗?

    点击上方"前端教程",选择"星标" 每天前端开发干货第一时间送达! 作者:echozh juejin.im/post/5d5b4c6951882569eb570 ...

  3. Git之解决git stash pop多次产生的文件冲突问题

    1.问题 我们用git命令一般拉取线上代码的时候,本地修改了,我们一般先git stash下,接下来git pull, 然后git stash pop下,但是我新增了文件,没有添加到本地git(也就是 ...

  4. [Git] git pull冲突和git stash pop冲突解决

    一.git pull 冲突 代码仓有人提交了新代码,而我本地也修改了代码,想要pull一下,却发现: error: Your local changes to the following files ...

  5. Git 分支管理-git stash 和git stash pop

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 合并分支,冲突是难免的,在实际协作开发中我们遇到的情况错综复杂,今天就讲两个比较重要的命令使用git ...

  6. git stash和git stash pop

    2019独角兽企业重金招聘Python工程师标准>>> git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为 ...

  7. git分支管理之合并冲突并解决

    git分支管理之合并冲突并解决 (这里的远程代码仓库是coding里面的,合并分支的操作是用github desktop进行操作的) 合并冲突发生的情景:当两个分支修改同一个文件时,可能发生两个分支不 ...

  8. Git 笔记——如何处理分支合并冲突

    1.前言 学习使用 Git 也有一段时间,但一直都是把 Git 当作一个代码仓库,使用的命令无非就是 clone, add, commit ,往往课程作业也没有过多人合作开发,没有体验过 Git 的分 ...

  9. Git学习之解决合并冲突

    ① 解决冲突 把Git合并失败的文件手动编辑成我们希望的内容 ② 提交,合并完成 场景: ① 新分支feature1,修改后,add, commit: ② 切回master后,修改后,add, com ...

最新文章

  1. ESXi6.7安装流程和bug处理
  2. 最常见企业管理SAAS软件有哪些?要解决哪些问题?
  3. scala_until
  4. 2.1 name_scope 简单入门(一)
  5. 异步http 超时_具有CompletableFuture的异步超时
  6. 算法 - 排序算法 (算法学习)(冒泡、选择、插入、希尔、快排、归并)
  7. leetcode42 --- trap
  8. 使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
  9. win8安装mysql出现2503_win8.1安装msi文件出现2503错误的解决方法
  10. Vue事件绑定(非常详细哦~)
  11. python3.4 or 3.x xlwt replaced with xlwt-future
  12. Sound Grinder Pro for Mac(音频批量编辑转换工具)
  13. css图片上面加文字透明,CSS实现文字半透明显示在图片上方法
  14. R 聚类热图-数据的标准化
  15. 预测web服务的未来
  16. java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
  17. 微信撤回 服务器已删除,微信撤回已经毫无用处,99%都能找回!
  18. 兆骑科创高层次人才引进双创平台,双创服务,赛事路演
  19. 高级软件工程第四次作业:东理三剑客团队项目
  20. Ie兼容js void不打开新页

热门文章

  1. APPStore版本更新时,App 预览和屏幕快照规则以及经验。
  2. 操作系统之 吸烟者问题
  3. 关于《佛本是道》的一些看法
  4. 团购三巨头承诺“誓言”:诚意够足,效率如何?
  5. JavaScript-空位补零
  6. 嵌入式计算机图形学入门书籍,蹭课:嵌入式系统设计计算机图形学
  7. 从粗放式到精益化编程
  8. Bellman-ford(解决负权边)
  9. Processing 安装外部库 Box2d
  10. python爬虫之无界面模式操作/scrapy框架