您的位置:首页 > 其它

git变基--rebase

2016-03-06 17:08 267 查看
变基过程:

  两个分支



  先考虑不用变基的合并:

$ 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: