前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git rebase 使用场景分析

Git rebase 使用场景分析

原创
作者头像
yaoyao_xhguo
发布2023-03-10 17:30:14
3970
发布2023-03-10 17:30:14
举报
文章被收录于专栏:yaoyao

合并冗余的commit

如果在一个代码变更里面充斥着大量无用且不清晰的提交历史,会存在以下问题:

代码语言:txt
复制
1. 不利于代码的code review;
2. 不利于代码回滚,面对海量的commit很难清晰的判断出应该回滚到那个commit。

此时git rebase就派上用场了,git rebase的使用场景之一就是合并多次提交记录。如下图连续修改a.js的内容两次,产生了两个commit记录,此时为了提交历史的简洁性可以考虑将其合并成一次提交。

  1. 执行指令:git rebase -i HEAD~2
  2. 进入VI编辑模式:
    行修改,再执行git log --online 可以看到commit已经被合并

同步公共分支代码

假如现在有这样一个场景,你基于master分支的2f2d8c5切出来一个feature分支进行开发,并进行了两次提交27dbad3和2f2d8c5:

此时master分支有一次新的提交e749bea:

如果此时进行的功能依赖e749bea这个commit,那么此时就需要同步master分支的代码到feature分支,此时有两种做法,先介绍下最常用的merge:

代码语言:javascript
复制
git checkout master
git pull
git ck feature/xxx
git merge master

可以看出提交记录分叉了,多了一个merge的commit信息,显然这个commit的意义不大,那如何解决呢,此时再看下git rebase(feature/add-file-2)分支基于e749beacommit切出)

代码语言:javascript
复制
git checkout master
git pull --rebase
git checkout feature/add-file-2
git rebase master

可见代码记录没有出现分叉,也没有类似merge这种没有意义的commit点。看上去feature/add-file-2这个分支就像以2add7bc这个基点切出来的一样。

提示

我们应该保持总是在自己的分支上执行git rebase命令来同步master 分支上的代码。 而不要反向操作。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 合并冗余的commit
  • 同步公共分支代码
  • 提示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档