切换分支,IDEA文件缓存导致文件冲突

问题描述

今天在修BUG时,忘记切回目标分支A,当前是在分支B,意识到后就回滚了下(因为就删除一个语句,直接回滚,正常修改多的话,是先git stash,再切到目标分支,然后git stash pop),然后切回目标分支A,再次删除目标语句,这时候IDEA提示File Cache Conflict,

让我选择从内存还是文件系统选择文件内容,当时想的是我修改过,内存中肯定是最新的,我要的就是最新的,选择了Keep Memory Changes。

当时觉得没什么问题,后面发现,弹出这个提示的时候,内存里面还是B分支的内容,再加上我删除语句的内容。

B分支和A分支的区别就是B分支修改了一个方法名,然后删除了一个方法。

当我点击完Keep Memory Changes按钮时,此时本地修改就是我删除了一个我想删除的语句,然后修改了一个方法名,删除了一个方法,这些变更在我push的时候推送到了远程,相当于我在这个文件上把分支B的内容合并到分支A。

原因

IDEA弹出文件缓存冲突的弹框原因是:外部进程更改了文件,并在IntelliJ IDEA中打开和未保存文件,这导致文件的两个版本冲突。IDEA文档中是这样描述的https://jetbrains.com.zh.xy2401.com/help/idea/file-cache-conflict.html

在切换分支后,应该是IDEA太卡,分支内容还没来的及切换,我就删除了那个语句,IDEA认为此时文件的文件内容(B分支文件内容再加上我删除语句)就是我修改后的内容,这时候切换分支显示分之后的文件反应过来,发现文件有冲突,提示冲突,我选择Keep Memory Changes,于是就出现B分支内容被合并到A分支上。

总结与启示

发现这个错误时后背发凉,辛亏发现得早,不然就是一个生产事故,如果当时选择Load File System Changes那么我删除的那个语句就会被覆盖掉。正确做法就是查看不同的地方,选择性保留,就像和分支一样,保留最终版本。所以遇到代码的问题一定要弄清原因,删代码一定要慎重、慎重、慎重。
特此记录,时刻谨记!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AE86Jag

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值