4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
【讲清楚】rebase的使用 - 灰信网(软件开发博客聚合)
来自 : www.freesion.com/article/26683 发布时间:2021-03-25

\"\"

目前有多于三个的log,而我想要合并最近的两个 log, 也就是上图中紫色的圈和黄色的圈,所以这个时候使用rebase的方式如下:

git rebase -i ee9ee598ea2a4bece9b23

注意这个时候的应该使用的log的编码是红色的圈,虽然我想要合并紫色和黄色,但是需要在红色圈的基础上进行合并,所以需要填入ee9ee598

填完之后,需要对log进行重新选择,

pick82b5047ChangesforMapLoad(changedInitKeyFrameforEUCMbasedonORI_Ver)pickeddaa2bLoadMap#Rebasea71eba2..e1a7dfaontoa71eba2#Commands:#p,pick=usecommit#r,reword=usecommit,buteditthecommitmessage#e,edit=usecommit,butstopforamending#s,squash=usecommit,butmeldintopreviouscommit#f,fixup=like squash ,butdiscardthiscommit\'slogmessage#x,exec=runcommand(therestoftheline)usingshell#Theselinescanbere-ordered;theyareexecutedfromtoptobottom.#IfyouremovealinehereTHATCOMMITWILLBELOST.#However,ifyouremoveeverything,therebasewillbeaborted.#Notethatemptycommitsarecommentedout

这个文件中的log是按照提交的时间顺序来的,提交的时间最早的log,就会在出现在 最上面,这样给了我们更清楚的知识,究竟保留哪个,去掉哪个?

pick即为保留的意思,如果pick某个hash,那个这一次提交的代码修改将会被保存;

squash表示那一次的提交内容将会和它的上一个log合并到一起;squash很适用于那种commit完成后发现自己没有add全的情况;

reword表示当前的commit记录会被保留,但是允许你修改commit的comment,使用与commit -m ”“ 时写错log的情况;

fixup就更彻底了,会将当前的提交代码与上一次的提交合并到一起,同时直接删除掉当前的log message,跟在下面图2的文件中注释掉其实是一样的效果;

一般情况下,squash是最常用的,即保留文件中的修改和commit的提交,只是将这次的commit与上一次的合并而已,所以需要将上述文件修改成:

pick82b5047ChangesforMapLoad(changedInitKeyFrameforEUCMbasedonORI_Ver)seddaa2bLoadMap

然后ctrl+x 离开,其中会提示是否需要保存,选择YES即可;

然后会遇到如下文件:

\"\"

这个文件主要是需要选择新的commit 的comment,也就是log message内容,如果不想要什么可以直接用#把他们注释掉,

因为我合并和紫色和黄色的两个圈圈log,并且觉得黄色圈圈的log内容更加准确,所以,就选择留下第三行的文字;

那么最后合并后的log内容为

\"\"

从如上的合并可以看出,红色的圈圈没变,但是紫色圈圈和黄色圈圈都不存在了,而合并成立绿色圈圈,同时绿色圈圈的commit 内容选用了紫色圈圈的内容;

更多理论参考:

https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

本文链接: http://everybase.immuno-online.com/view-733346.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
粘合剂和密封剂
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://