赞
踩
在开发一个功能或者修复一个bug时,有时会commit多次代码,这时为了commit历史的完美,会想将多个commit合并为一个,想要实现这个目标,就需要用到 git rebase
,下面记录操作方法,留作笔记。
在合并commit之前,需要先查看commit历史,确定我们需要合并的commit范围。
最通用的方法是 git log
。
示例:(上下箭头或者滑动可以控制内容滚动)
xwd@xwd-OptiPlex-7060:~/projects/ai/ai-tiger$ git log commit 047a3c26864eb204779a231fe49bcda9d260ef62 (HEAD -> 1.3.2, origin/1.3.2) Author: xingweidong <xingweidong@xkw.cn> Date: Fri Jun 17 09:17:41 2022 +0800 commit 5 commit b23f0d7558be752f8f82aa738d4ccd3574f83ade Author: xingweidong <xingweidong@xkw.cn> Date: Fri Jun 17 09:17:18 2022 +0800 commit 4 commit fbd6ad0e6b05d47e9bbe08c43ca7cfda019ec4b6 Author: xingweidong <xingweidong@xkw.cn> Date: Fri Jun 17 09:17:05 2022 +0800 commit 3 commit a1f7193e4dd642abe748f4b6a65962e95125015b Author: xingweidong <xingweidong@xkw.cn> Date: Fri Jun 17 09:16:21 2022 +0800 commit 2 commit b92721896dd1667af7c158936c6c9fe0979a45aa Author: xingweidong <xingweidong@xkw.cn> Date: Fri Jun 17 09:16:08 2022 +0800 commit 1 commit b76386ba5adcbe7db5fff14c8bd9b4a9945c881c (origin/master, origin/HEAD)
如果使用gitlab,按照下图步骤查看commit历史:
如果使用github,按照下图步骤查看commit历史:
这里以上面的commit 1~5 为例,进行说明。
示例操作系统为Ubuntu,如果使用macos,编辑操作同vi,windows系统类似。
例如现在要合并commit 3~5,使用命令:
git rebase -i a1f7193e
-i
代表交互式操作,a1f7193e
是commit2的id,一般取前7位或者更多即可。
输出如下:
从图中可以看到,最上面是我们的commit,按照提交先后,从上到下排列。
图中有一些命令,这里我们只需要关注:
只看说明,可能不容易理解,继续看操作,接下来就好理解了。
上图可以直接编辑,将上图修改成下图:
这里把commit4和commit5前面的pick
修改成了s
(squash
的简写),按 Ctrl + X
,出现提示:
输入y
,出现提示:
按回车键,出现提示:
到这一步,可以修改提交说明,比如修改成:
按Ctrl + X
,出现提示:
按y
,出现提示:
按会车键,结束,回到终端命令行:
然后提交到远程仓库,执行命令:
git push -f
-f 表示强制,受保护的分支不可以强制push。
查看远程仓库,多个commit合并为一个了:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。