git 合并多次提交 commit

在工作中,有时候在反复修改代码中(比如处理MR的检视意见,或者为了推送到测试环境,先 commit到自己的远程分支上)不免会有多次 commit,这样发起 MR 的时候,就会有一堆 commit 信息,看起来不清爽,如果想把多次提交合并成一个提交,可参考如下操作:

1)执行如下命令:

bash 复制代码
git log --oneline

查看历史提交信息:

最新提交为 56f3fec 因此,该提交为 HEAD

HEAD 指向最新放入仓库的版本。

2)合并 a84e379(最旧提交)-56f3fec(最新提交)

可执行如下操作:

bash 复制代码
git rebase -i HEAD~4

HEAD~4 会包含 HEAD、HEAD~1、HEAD~2、HEAD~3、HEAD~4(共 5 个提交)。

3)执行完操作后,会弹出命令编辑窗口:

bash 复制代码
pick a84e379 revise review comments
s 5542cd0 revise review comments 2
s e5b712f revise review comments 3
s 614f74a revise review comments 3
s 56f3fec revise review comments 5

第一个提交保留为 pick,后续提交改为 squash 或 s。

编辑完成后,:wq 保留并且退出。

4)会再弹出新的命令编辑窗口,示例如下:

bash 复制代码
# This is a combination of 5 commits.
# This is the 1st commit message:
revise review comments

# This is the commit message #2:
revise review comments 2

# This is the commit message #3:
revise review comments 3

# This is the commit message #4:
revise review comments 3

# This is the commit message #5:
revise review comments 5

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      <原始提交的时间戳>
#
# interactive rebase in progress; onto <父提交哈希>
# Last commands done (5 commands done):
#    pick a84e379 revise review comments
#    squash 5542cd0 revise review comments 2
#    squash e5b712f revise review comments 3
#    squash 614f74a revise review comments 3
#    squash 56f3fec revise review comments 5
# No commands remaining.
# You are currently editing a commit while rebasing branch 'main' on '<父提交哈希>'.
#
# Changes to be committed:
#       modified:   file1.txt
#       modified:   file2.txt

这时候,只需要删除该窗口中的所有信息,保留最后合并完后想保留的提交信息,然后 :wq 保存并且退出即可:

bash 复制代码
revise review comments

5)操作完成后,可再次执行查看提交日志操作,查看多次提交是否成功合并成了一次提交。

bash 复制代码
git log --oneline 

可以看到,多次提交已经合并成了一次提交。

6)执行 git push --force,更新远程代码仓库的 commit 信息。

bash 复制代码
git push origin loustest --force

登录远端代码仓,可发现已经成功合并了多次提交:

相关推荐
1***y1782 小时前
Git在发布流程中的自动化标签
运维·git·自动化
逻辑棱镜8 小时前
Git 分支管理与提交信息规范 (v1.0)
git·github·团队开发·代码规范·敏捷流程
悦悦欧呐呐呐呐9 小时前
git 设置邮箱和用户名
git
正经教主9 小时前
【Git】Git06:Git 管理 Android 项目教程(含GitHub)
android·git
艾莉丝努力练剑13 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
liuyao_xianhui1 天前
版本控制器git--gdb/cgdb
linux·运维·服务器·git
徐同保1 天前
如何使用GitKraken把git项目迁移到另一个平台,并保存所有提交记录,例如把github上的项目,迁移到gitee
git·gitee·github
高小秋1 天前
项目开发使用 git工作流插件 -- jgitflow开发实践
git
tealcwu1 天前
【软件工程】浅析Git message, version, changelog之间的关系
git
五号厂房1 天前
Git Worktree 使用指南
git