git merge的冲突判定机制如下:先寻找两个commit的公共祖先,比较同一个文件分别在ours和theirs下对于公共祖先的差异,然后合并这两组差异
由于太多人问怎么撤销 merge 了,于是 git 官方出了这份教程,表示在 git 现有的思想体系下怎么达到撤销 merge 的目标。 方法一,reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去: $ git checkout 【行merge操作时所在的分支】 $ git reset --hard 【merge前的版本号】 方法二,当 merge 以后还有别的操作和改动时,git 正好也有办法能撤销 merge,用 git revert: $ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】 Finished one revert. [master 88edd6d] Revert "Merge branch 'jk/post-checkout'" 1 files changed, 0 insertions(+), 2 deletions(-) 这样会创建新的 commit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示: Already up-to-date. 因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。 方法三,怎么撤销方法二: $ git revert 【方法二撤销merge时提交的commit的版本号,这里是88edd6d】 Finished one revert. [master 268e243] Revert "Revert "Merge branch 'jk/post-checkout'"" 1 files changed, 2 insertions(+), 0 deletions(-) 这样就行了,可以æ