Git 进阶(合并与变基)

代码合并与变基

在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。

  1. merge合并
    对于两个分支,如下图:
    在这里插入图片描述
    整合分支最容易的方法是 merge命令。 它会把两个分支的最新快照(C3和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)
    在这里插入图片描述
  2. rebase合并
    另一种方法:你可以提取在 C4中引入的补丁和修改,然后在 C3的基础上应用一次。 在 Git 中,这种操作就叫做 变基。 你可以使用 rebase命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
    在上面这个例子中,运行:
$ git checkout experiment 
$ git rebase master 
First, rewinding head to replay your work on top of it... Applying: added staged command

它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。
在这里插入图片描述
现在回到 master分支,进行一次快进合并。
在这里插入图片描述
优雅地合并分支代码并提交
通过对比两种合并方法,rebase的合并能够让提交历史变成串行,看起来更加整洁。所以在合并代码时,有的人喜欢rebase完成合并。此外,rabase还有个作用,修改提交历史,优雅的合并代码,就是通过适当的rebase修改提交历史,将本地自己开发多个提交进行适当的合并,然后再rebase合并分支。

  1. rebase的使用
    以将3次commit信息合为一个为例
git log  //查询得知总共提交了3次commit
git rebase -i HEAD~3

此时得到如下页面
在这里插入图片描述

此时输入 i,进入编辑模式,保留最上面的pick,把下面的所有pick改成 s,然后 esc 最后 :wq 退出。
然后进入如下图的commit信息内容展示部分,输入 i,进入编辑模式,只保留第一个commit信息,其余的删除,#开头的为注释不用关注
最后 esc :wq退出
在这里插入图片描述
最终效果如图
在这里插入图片描述
最后推送代码

//强制推送到远程
git push -f
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值