「Git」合并多个 Commit

在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

首先假设我们有3个 commit

git-log-origin.png

我们需要将2dfbc7e8和c4e858b5合并成一个 commit,那么我们输入如下命令

git-rebase-i.png

其中,-i的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到vi的编辑模式

git-rebase-edit.png

可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。

当前我们只要知道pick和squash这两个命令即可。

pick的意思是要会执行这个 commit

squash的意思是这个 commit 会被合并到前一个commit

我们将c4e858b5这个 commit 前方的命令改成squash或s,然后输入:wq以保存并退出

git-rebase-squash.png

这是我们会看到 commit message 的编辑界面

git-rebase-commit-message.png

其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。

git-rebase-commit-message-combination.png

输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

git-rebase-log-new.png

注意事项:如果这个过程中有操作错误,可以使用git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。

合并Git中第一个Root的commit的方法

$ git rebase -i --root


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commi...
    _Ryeeeeee阅读 287,651评论 29 134
  • 前言 虽然看到博主都写了有关git rebase -i合并commit的博文,但为巩固知识也在自己的博客中稍微做一...
    胡哈哈哈阅读 8,100评论 0 0
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 11,044评论 1 17
  • 收获在下个路口 温麻新姿 人的记忆就像一座宁静的水库,闸门一打开,就会奔涌而出。每逢佳节倍思亲,同样睹物也思...
    温麻新姿A阅读 1,722评论 0 1
  • 这个国庆节,儿子还在欧洲没有回来,我和老公一起回镇江。给公公婆婆买的新房子,已经装修好,就差家具和电器了。我和老公...
    谁的梦想在路上阅读 3,754评论 0 0