"); //-->
摘要:
直接使用
git rebase -i HEAD~3 pick s s本文主要参考
https://git-scm.com/docs/git-rebase
rebase在git中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。它的作用简要概括为:可以对某一段线性提交历史进行编辑、删除、复制、粘贴;因此,合理使用rebase命令可以使我们的提交历史干净、简洁!
前提:不要通过rebase对任何已经提交到公共仓库中的commit进行修改(你自己一个人玩的分支除外)1.合并多个commit为一个完整commit当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支B、C、D三个提交记录合并为一个完整的提交,然后再push到公共仓库。
现在我们在测试分支上添加了四次提交,我们的目标是把最后三个提交合并为一个提交:

这里我们使用命令:
git rebase -i [startpoint] [endpoint]
其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。
在查看到了log日志后,我们运行以下命令:
git rebase -i 36224db
或:
git rebase -i HEAD~3
然后我们会看到如下界面:

根据我们的需求,我们将commit内容编辑如下:
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)

然后是注释修改界面:


当我们项目中存在多个分支,有时候我们需要将某一个分支中的一段提交同时应用到其他分支中,就像下图:



git rebase [startpoint] [endpoint] --onto [branchName]
其中,[startpoint] [endpoint]仍然和上一个命令一样指定了一个编辑区间(前开后闭),--onto的意思是要将该指定的提交复制到哪个分支上。
所以,在找到C(90bc0045b)和E(5de0da9f2)的提交id后,我们运行以下命令:
git rebase 90bc0045b^ 5de0da9f2 --onto master
注:因为[startpoint] [endpoint]指定的是一个前开后闭的区间,为了让这个区间包含C提交,我们将区间起始点向后退了一步。
运行完成后查看当前分支的日志:



git checkout master git reset --hard 0c72e64

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
多功能显示LCD显示芯片电路
光学镜片
对标英特尔AMD!英伟达将于今年Q4推出旗下首款AI PC芯片
44b0 smsc_91c111请教
如何从FSK信号里取出Caller ID
德州仪器:打造更加人性化的车载娱乐系统
交直流两用暗室安全灯
继电器分类
触摸屏驱动开发文档
MC34018免提通话电路
数字化坦克
台海军计划更换主力反潜护卫舰
贸泽开售适用于新一代汽车和工业应用的Molex MX150穿缸密封连接器
继电器的选择
Wolfspeed得州厂关闭并挂牌出售
台计划装备云豹装甲车
曝台积电拒绝代工三星Exynos处理器:理由是怕泄密
【科技和移动性亮点】Aeva发布高分辨率4D激光雷达传感器,推动自动驾驶发展
键盘的资料
机构:预计到2026年医疗行业对生成式人工智能的投资将增加两倍
世纪威慑—美国“三叉戟”战略核潜艇
【科技和移动性亮点】德州仪器发布全新汽车芯片
电话模拟摘机电路
监视电池端电压的铅酸电池充电器(MAX1649orMAX603)
提供激光镜片
日常生活中的工业技术:助力智能生活的幕后力量
增强型英阿双语来电显示芯片电路
台军即将具备24小时空中预警能力
中文家加e短信息电话芯片电路
中国企业优化云原生投资的三大策略