git merge
分支合并有两种方式:
- fast-forward,假设从master分支创建一条新的分支develop,在develop分支上进行了一些修改,但是在此期间master分支没有进行任何修改,那么在将develop分支合并到master分支的时候,只是简单的将master分支的指针右移。如下所示
- 创建新的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来重新找到历史操作记录。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。