rebase:
1、
在和远程分支同步后,我们对我们的一个文件做了两次提交:
提交状态如下:
* 我的第二次提交
* 我的第一次提交
* 我开始提交的起点
2、
我们尝试推送本地分支失败,
这说明有人先于我们向远程分支作了推送。
按照经验,先pull一下,pull完并处理可能的冲突后再push,
此时的提交状态:
* 先pull并merge后,再次push产生的提交
|\
| * 另一个人向我工作分支push的提交
* | 我的第二次提交
* | 我的第一次提交
|/
* 我开始提交的起点
3、
可以看出,上面产生了分叉。
在当前的分支上执行:git rebase
执行后的状态:
* 我的第二次提交
* 我的第一次提交
* 另一个人向我工作分支push的提交
* 我开始提交的起点
原本分叉的提交现在变成一条直线了
4、
就是说,我原来是从“我开始提交的起点”这个commit作为基础,开始修改的。
但是在变基以后,
改成了从“另一个人向我工作分支push的提交”这个commit作为基础,开始修改了。
5、在pull后再push时产生分支的原因是,
我的提交和别人的提交都是从同一个commit的点开始修改的,
因为以同一个commit作基础分别作了修改,由此产生了分叉。
但是变基的操作,是把我的提交的起始的commit,从两人共用的commit点
改成了pull时,拉过来的别人的提交点。
所以变基的意思是:改变了我的提交的基础点。