2

git merge

分支合并有两种方式:

  1. fast-forward,假设从master分支创建一条新的分支develop,在develop分支上进行了一些修改,但是在此期间master分支没有进行任何修改,那么在将develop分支合并到master分支的时候,只是简单的将master分支的指针右移。如下所示

 图片描述

  1. 创建新的commit,如果被合入代码的分支和合入分支都进行了修改,则此时需要创建一个新的commit,此时这个commit的祖先有两个,即被合入分支之前的最后一个commit和合入分支之前的最后一个commit。如下所示

 图片描述

进行合并操作时,从一个分支合并过来,这个分支的提交记录也将合并到当前分支。在上图中不能看出来但经过试验证明,执行git log操作时,合入的分支的commit会按时间顺序插入当前分支。

git revert

使用git revert来进行回退时,方式为创建一个新的commit。
图片描述

git reset

git reset执行的结果和git revert是一样的,但是它的内部逻辑确实不一样的。
图片描述
从上图我们可以知道,使用git reset命令的时候,不会创建一个新的commit来表示回退,而是直接HEAD指向回退的commit:2。

这里需要注意的是虽然回退到了commit:2,但是commit:2之后的提交不会删除掉。我们可以使用git reflog来重新找到历史操作记录。

水一水
39 声望5 粉丝

总结经验,提升自己