Git中分支变基的原理

Git中分支的整合分为合并变基两种。

变基是把一系列的提交按照原有次序依次应用到另一个分支上。而合并是把最终的结果合在一起。

一、变基原理

首先找到基底分支和当前分支的最近共同祖先,然后比对共同祖先和当前分支的历次提交,提取出修改并保存为临时文件。接着将当前分支指向基底分支。最后将之前保存为临时文件的修改依序应用。

二、变基意义

使提交历史更加整洁。

三、变基命令

git rebase <baseBranch> //当前分支变基到baseBranch

git rebase <baseBranch> <topicBranch> //topicBranch变基到baseBranch

git rebase --onto <baseBranch> <branch> <topicBranch> //从topicBranch中拿出branch里没有的提交,将这些提交所做的修改,依序应用到baseBranch中

四、注意事项

如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。

因为变基的实质是丢弃一些提交,然后新建一些内容一样但实际不同的提交。你若将别人开发所基于的提交的丢弃了,那你就有大麻烦了,你的同事也会因此鄙视你。

但若真的发生这样的事情,也不是完全没有办法解决。

git fetch && git rebase <remote>/<branch> 

git pull --rebase

上述命令执行的操作是:

  1. 检查哪些提交是我们的分支上独有的
  2. 检查其中哪些提交不是合并操作的结果
  3. 检查哪些提交在对方覆盖更新时并没有被纳入目标分支
  4. 把查到的这些提交应用在 <remote>/<branch> 上面

对于pull命令,你若想要默认使用选项--rebase,可以执行以下代码更改pull.rebase的默认配置

git config --global pull.rebase true

参考资料:

[1] Git-变基.https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

 

相关推荐