先上结论:IDEA的Undo Commit有坑。换用 Reset Current Branch to Here。
日常工作前端开发,用VSCode居多,习惯了VSCode的git版本管理。最近用IDEA写Java的时候,发现IDEA中的Undo Commit和 VSCode中的 Undo Last Commit有很大的不同。用起来别扭。
下面是正文
1、在项目中,修改一个项目文件
上图是我在P0001TwoSum.java中添加了一行注释,文件有变更。
此时IDEA的版本管理和VSCode的版本管理均正常,都可以看到文件变更(##1)。
2、将这个文件变更提交一下,产生一个commit,之后不要push。
(提交用IDEA或VSCode操作均可进行,这里我用IDEA提交了一个[chore] test IDEA的commit)
此时查看IDEA和VSCode中的状态,都是可以push的状态,都没有问题。
3、用IDEA中的Undo Commit撤销这个commit,出现问题。文件变更不存在了,文件从IDEA的版本管理中消失。
(上面两步操作后IDEA中再次进入commit界面,发现文件不见了 ##3)
但是代码是变更了的
那文件变更去了哪儿呢?
来看VSCode
在VSCode中,这个代码在Staged Changes中,是一个staged状态。
(对应从change发生后,执行 git add xxx 后的状态)
4、在VSCode中,把这个文件Unstaged Changes,让它进入Changes状态,再看IDEA,还是没法看到这个文件(与##3状态一样)。
5、IDEA中的Undo Last Commit别扭的很。现在我们先用VSCode提交,产生一个commit,再换用Reset Current Branch to Here来实现撤销commit。
(这里我用VSCode提交了一个[chore] test VSCode的commit)
在IDEA里,选择这个commit的上一个commit,右键单击
选择Reset Current Branch to Here
这里默认Mixed,不要改。 点击Reset。
再分别看IDEA和VSCode,都能看到changes,IDEA中的文件变更也回来了(状态同##1)。
结论:IDEA的Undo Commit有坑。换用 Reset Current Branch to Here。
完结。
同步更新到自己的语雀
https://www.yuque.com/dirackeeko/wxkg90/gfg24zw61hk2rulg
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。