对一个仓库进行了多次提交,提交信息很多,需要将提交的信息合并,例如对如下的三条提交记录进行合并
在这里插入图片描述
切换到dev分支后,执行命令

git log .

查看需要合并的提交记录,然后执行合并命令

git rebase -i HEAD~3

其中HEAD~3表示合并最近三次的提交,如果是需要对之前某几次的提交进行合并,则执行命令

git rebase -i <commit_start 不含> <commit_end 含>

commit_start和commit_end表示的是提交的commit ID,commit_start表示开始的commit,不包含commit_start本身,commit_end表示截止的commit,包含commit_end本身,commit ID无需输入全部,输入部分即可。例如我们的需求中可以输入

git rebase -i 424bbe301394197d 97fe7dbb98848

显示结果如下
在这里插入图片描述
含义解释如下

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

基本使用中主要用s和p,一般都直接整合到第一次提交上,修改如下
在这里插入图片描述
保存退出后提示信息如下
在这里插入图片描述
这里可以修改为合并后需要的提交信息,修改如下,完成后再次保存退出。
在这里插入图片描述
保存退出后git log显示如下
在这里插入图片描述
然后使用命令

git push -f

将修改推送到远程服务器dev分支
在这里插入图片描述

如果想修改之前的某两次提交,例如有五次提交,分别为: 1 2 3 4 5
commit 5
commit 4
commit 3
commit 2
commit 1
希望将2和3合并,变为1 2 4 5,执行如下命令

git rebase - i commit_id_1

执行结果如下
在这里插入图片描述
将3的pick改为s,然后保存退出后重新填写commit msg,最后执行git push -f推送到远程分支

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐