合并和变基
首先谈区别
区别就是:变基就是把其它分支最新提交历史库作为当前分支的基础,也就是从最开始那里截取当前分支直接接到要变基的分支上,于是,你个人的多个提交也就连续了起来,大家都在一条线上,只有短暂分支,但是仍然要处理冲突;
其次是联系
都是处理多人协同开发的方式,或者说多分支之间冲突的处理,本质上都是合并;
变基不要合并历史和多条线分支之间的交互,而合并则会记录这些合并。
不同的风格
使用合并还是变基取决于团队,绝大多数情况下,或者说默认的,大家都是使用合并,比如拉出分支写完代码测试没问题后提交之前要pull一下,防止把别人的代码覆盖,如果不强制pull,别人有提交的话也会被拒绝。
合并
这个pull默认就是合并,也就是把远程别人提交的代码合并到自己的本地提交之中,形成新的提交,在push到远程。
或者别人需要合并你的代码,远程分支之间相互合并,都是把其它分支最新的代码直接拉入自己的代码库之中。于是不得不处理其中的冲突,也就是大家都有改了的地方。
于是我们可以看见合并历史的眼花缭乱,最明显的一种情况就是合并来合并去的。
比如大家在dev分支上开发,开发完成合并到test分支。
变基
还有一种更新代码的方式就是变基,直接把提交之前的基础换成最新的,本地提交直接嫁接最新的代码上去,处理冲突之后,直接push到远程。
比如大家在dev上各自拉一个分支,你写你的分支,我写我的分支,你提交到dev后,我还没有提交,这时我的分支只是个暂时分支,就可以变基到你的提交历史上,进行冲突解决。开发完成后我删除这个分支。
然后,这就是一条线了。
其实,还有疑问的