m

minxiang51574

V1

2022/09/06阅读:28主题:萌绿

使用git rebase构建清晰版本记录

一、Git Rebase的介绍

我们都知道,git rebase可以实现git节点或者分支的合并,但是,真正涉及到为什么要使用git rebase,它的好处又是什么等一些比较实际的问题,很多同学就搞不清楚了,本文聚焦于git rebase,希望对你有帮助~

二、项目中git提交记录

先来看两张git记录图

image.png
image.png
image.png
image.png

这就是真实项目的git提交记录,可谓是混乱不行,溯源困难。究其原因,也是因为在多人开发的项目中,在分支合并时无脑使用git merge 或者使用某些工具【默认采用git merge的方式】)合并分支代码造成的,会让git Graph看起来十分混乱,在master上不便于查找版本记录。

三、实现清晰的版本记录

此刻我们已完成某个版本迭代,准备上线。

  • 1、在当前开发分支创建一个分支(名字随便取)
  • 2、这个分支提交的第一条记录的前一条记录号,使用git rebase -i + 记录号 (使用git log --oneline查看记录号)
image.png
image.png
  • 3、此时会进入编辑面板,输入%s/pick/s/g,(此表达式的意思是将所有的pick替换成s),然后将第一个s改为p,(其中s的意思是将该commit和前一个commit合并, p为保留该commit),按ESC键后,然后按shift键 + enter键,输入wq 保存后退出编辑面板
image.png
image.png
image.png
image.png

操作3就将多条git记录合并成了一条

  • 4、输入git commit --amend 修改提交记录文案, 改为自定义版本号(比如v1.0 v1.1 v1.2)
image.png
image.png
  • 5、 输入git log --oneline 查看合完后的记录号
image.png
image.png
  • 6、切换到master,使用git cherry-pick + 记录号,然后git push 推到远程
    注意: 如果在cherry-pick 的过程中出现冲突, 那么解决完冲突后使用git add . git cherry-pick --continue即可

最后再看看git提交记录

image.png
image.png

image.png 简答清晰明了,每个版本迭代看提交记录就能了解清楚,如果有需要版本功能回退的,直接回退到指定版本即可

四、其它说明

1. git pull 和 git pull --rebase的区别:

git pull 是 git fetch + git merge (默认方式)
git pull --rebase 是 git fetch + git rebase
如果出现冲突, git pull解决完冲突需要 git add . 然后git commit(或者自动生成commit信息) 最后git push到远程。此时查看记录会发现多了一条合并的记录
而git pull --rebase解决完冲突后是使用git add . 然后git rebase --continue,最后git push不会产生多余的提交记录

2. git rebase -i 含义:

**其中-i的意思是–interactive,即弹出交互式的界面让用户编辑完成合并操作

3. git cherry-pick含义

**把另一个分支的一条记录或者多条记录拿到当前分支。如果是多条记录的话, 采用 git cherry-pick commit1..commit10 (注意这是前开后闭的区间,即不包含第一条,如果想要包含第一条,使用commit1^..commit10),最后使用git push推到远程

4. 使用此方式合并代码,在平时更新代码的时候需要使用git pull --rebase的方式,因为这样在解决冲突后不会改变git Graph轨迹,也不会多出多余的解决冲突记录,实现当前版本线性化

❤️感谢阅读

  1. 如果本文对你有帮助,不要吝啬你的赞哟,你的「赞」是我前行的动力;
  2. 欢迎关注公众号  【冥想侃前端】  一起学习进步。

分类:

前端

标签:

Git

作者介绍

m
minxiang51574
V1