普通的集中式工作流开发流程下,会有一个问题,就是每次如果某个人push了代码到master,然后另外一个哥儿们也要push会失败
此时那个哥儿们就要git pull拉取和合并master分支的代码
坑爹的事情来了,每次都这样合并的话,会导致你最后发现看到这个项目,它的提交历史就是各种分叉,各种合并,提交历史感觉很难看
实际上来说,对于一个普通的集中式工作流开发的小项目,是不需要这样分叉的提交历史的,我们希望的是那种很平滑的,就一条线一样的提交历史,看起来会比较清爽
要优化集中式工作流的提交历史成为一条线,看起来非常的清晰和清爽,此时就要使用rebase命令
git pull --rebase
rebase:变基,就是改变commit之前依赖的基础commit
通过
git pull --rebase
,执行变基式的合并,改变commit历史,看起来提交历史就是一条直线,张三先提交,李四再提交,李四再提交,张三再提交集中式工作流的项目,看起来比较清爽
比如说我们有一个master分支,还有另外一个分支比如feature/001
也可以是合并的时候,采取git rebase feature/001来合并
你就全部都采取
git pull --rebase
来跟其他人对master分支的修改进行合并,就能保持项目的提交历史就是一条直线将test变基到master
如图在上一个分叉点之后test的提交记录会消失,会将这个结点之后的master的变更和test分支合并, 形成test指针指向的新commit对象,
因为test在上一个结点后有三次提交 test ,master222, test3,将这三次提交的提交对象合并到master的master222, test 和master222合并成新提交 test rebase ,master222 和 test rebase 合并成 test rebase, test3和test rebase合并形成 test rebase3
test第三次 是rebase第二次后的结果和test第二次一致, 自动合并