先上结论:IDEA的Undo Commit有坑。换用 Reset Current Branch to Here。

日常工作前端开发,用VSCode居多,习惯了VSCode的git版本管理。最近用IDEA写Java的时候,发现IDEA中的Undo Commit和 VSCode中的 Undo Last Commit有很大的不同。用起来别扭。

下面是正文

1、在项目中,修改一个项目文件
image.png
上图是我在P0001TwoSum.java中添加了一行注释,文件有变更。

此时IDEA的版本管理和VSCode的版本管理均正常,都可以看到文件变更(##1)。
image.png image.png

2、将这个文件变更提交一下,产生一个commit,之后不要push。
(提交用IDEA或VSCode操作均可进行,这里我用IDEA提交了一个[chore] test IDEA的commit)
此时查看IDEA和VSCode中的状态,都是可以push的状态,都没有问题。
image.png

image.png

3、用IDEA中的Undo Commit撤销这个commit,出现问题。文件变更不存在了,文件从IDEA的版本管理中消失。
image.png image.png

(上面两步操作后IDEA中再次进入commit界面,发现文件不见了 ##3)
image.png

image.png

但是代码是变更了的

那文件变更去了哪儿呢?
image.png

来看VSCode
image.png
在VSCode中,这个代码在Staged Changes中,是一个staged状态。
(对应从change发生后,执行 git add xxx 后的状态)

4、在VSCode中,把这个文件Unstaged Changes,让它进入Changes状态,再看IDEA,还是没法看到这个文件(与##3状态一样)。
image.png image.png

image.png

5、IDEA中的Undo Last Commit别扭的很。现在我们先用VSCode提交,产生一个commit,再换用Reset Current Branch to Here来实现撤销commit。
(这里我用VSCode提交了一个[chore] test VSCode的commit)

在IDEA里,选择这个commit的上一个commit,右键单击
image.png
选择Reset Current Branch to Here

image.png
这里默认Mixed,不要改。 点击Reset。

再分别看IDEA和VSCode,都能看到changes,IDEA中的文件变更也回来了(状态同##1)。

结论:IDEA的Undo Commit有坑。换用 Reset Current Branch to Here。

完结。

同步更新到自己的语雀
https://www.yuque.com/dirackeeko/wxkg90/gfg24zw61hk2rulg


DiracKeeko
125 声望2 粉丝