1、查看所有的提交记录
git log
2、合并提交
git rebase -i + commitId(此处的commitId指要合并的多个commit的前一个commitId,也就是例子中的地基)
使用git rebase -i命令后,会进入git内置的vim界面,输入i键,进入编辑状态(键盘输入esc + :英文冒号 + wq,表示保存并退出此编辑)
① 把多个pick修改为一个,其余pick修改为s
② 去除多余的commit描述,在不需要的描述前加上#号,表示注释该描述
3、将修改push到远程仓库并强制更新
git push origin 分支名 -u -f
4、举例说明
以下列提交记录的操作为例,把“实现XXX功能”(5276ea2c)及“优化代码”(0f2a06b6)这两次commit合并成一个commit
- git log 查询出以下内容(其中12dc7da4688918e88d1cb510805b5d8a55a1c2a5的commitId为地基)
commit 0f2a06b63ad037a9bc7898b60117301eeb7c0ea0 (HEAD -> feature-test-49146, origin/feature-test-49146)
Author: ff_g.liucy <ffliucy@chinatelecom.cn>
Date: Tue Aug 1 09:18:17 2023 +0800
优化代码
commit 5276ea2cd01fc0f300b22fb7e16044d2f3a6366e
Author: ff_g.liucy <ffliucy@chinatelecom.cn>
Date: Tue Aug 1 09:16:59 2023 +0800
实现XXX功能
commit 12dc7da4688918e88d1cb510805b5d8a55a1c2a5
Merge: 17843286 bf897675
Author: test
Date: Mon Jul 31 15:19:16 2023 +0800
- git rebase -i 12dc7da4688918e88d1cb510805b5d8a55a1c2a5
说明:① 输入i键,把“0f2a06b6 优化代码”前的pick修改为s;然后输入esc键+英文冒号+wq
pick 5276ea2c 实现XXX功能
s 0f2a06b6 优化代码
# Rebase 1bdc7da4..0f6a06b6 onto 1bdc7da4 (2 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
......
========================================================================================================
说明:② 输入i键,去除“优化代码”这个描述,在“优化代码”前加#号;然后输入esc键+英文冒号+wq
# This is a combination of 2 commits.
# This is the 1st commit message:
实现XXX功能
# This is the commit message #2:
# 优化代码
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Tue Aug 1 09:16:59 2023 +0800
若出现错误,导致中途卡在Lcy@LAPTOP-J70UPAA2 MINGW64 /f/test (feature-test-49146|REBASE)状态,输入git rebase --abort即可退出
- rebase成功后,再次输入git log,可以看到此时commit已合并,仅保留“实现XXX功能”(14ef2c48)
commit 14ef2c48d3480ed85bcfa8a0bbb034e75b2415b4 (HEAD -> feature-test-49146)
Author: ff_g.liucy <ffliucy@chinatelecom.cn>
Date: Tue Aug 1 09:16:59 2023 +0800
实现XXX功能
commit 12dc7da4688918e88d1cb510805b5d8a55a1c2a5
Merge: 17843286 bf897675
Author: test
- git push origin feature-test-49146 -u -f(push到远程仓库)