前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git基础知识(八)--变基

Git基础知识(八)--变基

作者头像
zx钟
发布2019-07-19 14:26:49
7180
发布2019-07-19 14:26:49
举报
文章被收录于专栏:测试游记测试游记

变基图示

变基

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

  • merge
  • rebase

merge

从master分支的C2提交拉取分支experiment并创建C4提交

从C2创建C3提交

将experiment分支合入master,master前进至C5

merge

rebase

将上例中的C4的修改直接基于C3进行提交。

相当于提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。

也就是将C4中的修改变基到C3上

代码语言:javascript
复制
$ git checkout experiment 
$ git rebase master

rebase

代码语言:javascript
复制
$ git checkout master 
$ git merge experiment

rebase2

两者差别

这两种整合方法的最终结果没有任何区别,但是变基使得提交历史更加整洁

你在查看一个经过变基的分支的历史记录时会发现,尽管实际的开发工作是并行的,但它们看上去就像是串行的一样,提交历史是一条直线没有分叉。

挑拣变基

现在需要将client里面的内容(C8,C9)变基到master分支的C6后。

挑拣变基

代码语言:javascript
复制
$ git rebase --onto master server client
$ git checkout master 
$ git merge client

使用--onto选中在client分支里,但是不在server分支里面的修改,将它在master分支上重放。

快进合并 master 分支,使之包含来自 client 分支的修改

整合server变更

代码语言:javascript
复制
# git rebase [basebranch] [topicbranch]
$ git rebase master server
$ git checkout master 
$ git merge server

将 server 中的修改变基到 master 上

变基风险

注意⚠️:不要对在你的仓库外有副本的分支执行变基。

变基操作的实质是丢弃一些现有的提交,然后相应地新建一些内容一样但实际上不同的提交

如果有人拉取了一个分支并在此基础上进行开发,但是该分支被你执行了变更。

那么当那个人提交的时候就需要处理额外的合并工作(将相同的内容又合并一次,并生成了一个新的提交)。

不过这个情况可以使用变基来解决,Git能分辨哪些提交已经存在,并且会基于此处进行后续不同内容的整合。

变基原则

  • 只对尚未推送或分享给别人的本地修改执行变基操作清理历史。
  • 从不对已推送至别处的提交执行变基操作。

所以在还未上库之前,随便怎么搞,但是上库之后的东西,就别乱动了!

变基使版本变更走向清晰,合并使实际发生的事情有迹可循,两者各有好处,需要结合实际情况进行选择与使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变基
    • merge
      • rebase
        • 两者差别
          • 挑拣变基
          • 变基风险
          • 变基原则
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档