• 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
  • 相关阅读:
    Mac使用Homebrew进行软件包管理
    RNN模拟二进制加法
    虚拟机安装ubuntu18.04
    github合并分支到master
    Python配置虚拟环境
    Python的进程、线程、协程
    原码,反码,补码
    MySQL中的截位函数:RIGHT与LEFT
    MySQL查询和删除重复记录
    Mysql中的数据类型
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5036423.html
Copyright © 2020-2023  润新知