m
minxiang51574
V1
2022/09/06阅读:82主题:萌绿
使用git rebase构建清晰版本记录

一、Git Rebase的介绍
我们都知道,git rebase
可以实现git节点或者分支的合并,但是,真正涉及到为什么要使用git rebase
,它的好处又是什么等一些比较实际的问题,很多同学就搞不清楚了,本文聚焦于git rebase
,希望对你有帮助~
二、项目中git提交记录
先来看两张git记录图


这就是真实项目的git提交记录,可谓是混乱不行,溯源困难。究其原因,也是因为在多人开发的项目中,在分支合并时无脑使用git merge 或者使用某些工具【默认采用git merge的方式】)合并分支代码造成的,会让git Graph看起来十分混乱,在master上不便于查找版本记录。
三、实现清晰的版本记录
此刻我们已完成某个版本迭代,准备上线。
-
1、在当前开发分支创建一个分支(名字随便取) -
2、这个分支提交的第一条记录的前一条记录号,使用git rebase -i + 记录号 (使用git log --oneline查看记录号)

-
3、此时会进入编辑面板,输入%s/pick/s/g,(此表达式的意思是将所有的pick替换成s),然后将第一个s改为p,(其中s的意思是将该commit和前一个commit合并, p为保留该commit),按ESC键后,然后按shift键 + enter键,输入wq 保存后退出编辑面板


操作3就将多条git记录合并成了一条
-
4、输入git commit --amend 修改提交记录文案, 改为自定义版本号(比如v1.0 v1.1 v1.2)

-
5、 输入git log --oneline 查看合完后的记录号

-
6、切换到master,使用git cherry-pick + 记录号,然后git push 推到远程
注意: 如果在cherry-pick 的过程中出现冲突, 那么解决完冲突后使用git add . git cherry-pick --continue即可
最后再看看git提交记录

简答清晰明了,每个版本迭代看提交记录就能了解清楚,如果有需要版本功能回退的,直接回退到指定版本即可
四、其它说明
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轨迹,也不会多出多余的解决冲突记录,实现当前版本线性化
❤️感谢阅读
-
如果本文对你有帮助,不要吝啬你的赞哟,你的「赞」是我前行的动力; -
欢迎关注公众号 【冥想侃前端】 一起学习进步。
作者介绍
m
minxiang51574
V1