问题1:IDEA合并tool中的结果展示的内容不属于合并的两个分支,既不是your Version 也不是Server Version,而是your Version的前一个commit
- 产生原因:使用git的cherrypick 合并过的原因
- 说明分支
A分支-解决线上Bug分支
B分支-本地开发分支 - 过程分析:
在遇到线上问题需要紧急修复,拉取A分支修改bugs,本地一直使用B分支在测试环境进行开发,既然发现线上有这个问题,那么本地也一定会有这个bug,所以在修改完Bug的时候将A分支的fix用git的cherrypick合并到了B分支。后来又有一个人提交了一个修复,决定将A分支合并到B分支上,以免漏掉提交,此时出现上面的问题。
当使用merge合并AB两个分支的时候git发现,有两个相同的commit都进行了相同的修改,此时git认为这是个冲突,于是IDEA的就找不存在冲突的your Version中的一个commit进行展示,所以就会出现这个看似诡异问题。还是IDEA太聪明了,以至于没有跟上他的思路
问题2:IDEA对应的git操作中的checkout – filepath
- 想撤回修改,因为找不到checkout – filepath命令,常常要切回到命令窗口使用checkout --filepath的方法将修改的文件进行撤回。今天找到了这个工具 revert 一直以为它是 Git 命令中的 revert
关于 Git的reset、revert、checkout的一些简单的理解
- git revert 远程分支中包含反做前的记录
- reset可以操作分支也可以操作文件,【a】:git reset 回退本地未push的提交,push后远端没有commit,回退远端的commit是需要用push -f 远端提交记录被删除;【b】 :reset 本地缓存中的文件到工作空间
- checkout 可以操作分支,也可以操作文件