git合并commit
在开发一个功能或者修复一个bug时,有时会commit多次代码,这时为了commit历史的完美,会想将多个commit合并为一个,想要实现这个目标,就需要用到,下面记录操作方法,留作笔记。
在开发一个功能或者修复一个bug时,有时会commit多次代码,这时为了commit历史的完美,会想将多个commit合并为一个,想要实现这个目标,就需要用到 git rebase
,下面记录操作方法,留作笔记。
浏览commit
在合并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
这里以上面的commit 1~5 为例,进行说明。
示例操作系统为Ubuntu,如果使用macos,编辑操作同vi,windows系统类似。
例如现在要合并commit 3~5,使用命令:
git rebase -i a1f7193e
-i
代表交互式操作,a1f7193e
是commit2的id,一般取前7位或者更多即可。
输出如下:
从图中可以看到,最上面是我们的commit,按照提交先后,从上到下排列。
图中有一些命令,这里我们只需要关注:
- pick:使用提交
- squash:使用提交,但融合到前一个提交
只看说明,可能不容易理解,继续看操作,接下来就好理解了。
上图可以直接编辑,将上图修改成下图:
这里把commit4和commit5前面的pick
修改成了s
(squash
的简写),按 Ctrl + X
,出现提示:
输入y
,出现提示:
按回车键,出现提示:
到这一步,可以修改提交说明,比如修改成:
按Ctrl + X
,出现提示:
按y
,出现提示:
按会车键,结束,回到终端命令行:
然后提交到远程仓库,执行命令:
git push -f
-f 表示强制,受保护的分支不可以强制push。
查看远程仓库,多个commit合并为一个了:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)