git变基--rebase

变基过程:

  两个分支

  先考虑不用变基的合并:

$ git checkout master
$ git merge experiment

  合并后:

  如果变基:(以下为变基过程)

$ git checkout experiment
$ git rebase master

conflict resolve

$ git rebase --continue

  然后再合并:

$ git checkout master
$ git merge experiment

  一般我们这样做的目的是为了确保在向远程分支推送时能保持提交历史的整洁——例如向某个别人维护的项目贡献代码时。 在这种情况下,你首先在自己的分支里进行开发,当开发完成时你需要先将你的代码变基到 origin/master 上,然后再向主项目提交修改。 这样的话,该项目的维护者就不再需要进行整合工作,只需要快进合并便可。

  

  上述变基过程的另一种方式:

$ git rebase master experiment

confict resolve

$ git rebase --continue
$ git checkout master
$ git merge experiment

  这样省去先切换到experiment分支的过程。即便在另一个不相关的分支,也无须去先切换到experiment分支。( git rebase [basebranch] [topicbranch] )

git rebase --onto:

  假设你希望将 client 中的修改合并到主分支并发布,但暂时并不想合并 server 中的修改,因为它们还需要经过更全面的测试。 这时,你就可以使用 git rebase 命令的 --onto 选项,选中在 client分支里但不在 server 分支里的修改(即 C8 和 C9),将它们在 master 分支上重演:  

$ git rebase --onto master server client

conflict resolve

$ git rebase --continue

  以上命令的意思是:“取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然后把它们在 master 分支上重演一遍”。

  然后,合并:

$ git checkout master
$ git merge client

git pull --rebase:

$ git pull --rebase

  等价于:

$ git fetch
$ git rebase origin/master
原文地址:https://www.cnblogs.com/drizzlewithwind/p/5036423.html