git合并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 <[email protected]>
Date:   Fri Jun 17 09:17:41 2022 +0800

    commit 5

commit b23f0d7558be752f8f82aa738d4ccd3574f83ade
Author: xingweidong <[email protected]>
Date:   Fri Jun 17 09:17:18 2022 +0800

    commit 4

commit fbd6ad0e6b05d47e9bbe08c43ca7cfda019ec4b6
Author: xingweidong <[email protected]>
Date:   Fri Jun 17 09:17:05 2022 +0800

    commit 3

commit a1f7193e4dd642abe748f4b6a65962e95125015b
Author: xingweidong <[email protected]>
Date:   Fri Jun 17 09:16:21 2022 +0800

    commit 2

commit b92721896dd1667af7c158936c6c9fe0979a45aa
Author: xingweidong <[email protected]>
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合并为一个了:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xwd127429/article/details/125326930