Git 合并多个 commit

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

1. 查看提交历史 git log

首先你要知道自己想合并的是哪几个提交,可以使用 git log 命令来查看提交历史,假如最近 4 条历史如下:

commit 3ca6ec340edc66df13423f36f52919dfa3......

commit 1b4056686d1b494a5c86757f9eaed844......

commit 53f244ac8730d33b353bee3b24210b07......

commit 3a4226b4a0b6fa68783b07f1cee7b688.......

历史记录是按照时间排序的,时间近的排在前面。

2. git rebase

想要合并 1-3 条,有两个方法

  1. 从HEAD版本开始往过去数3个版本

    git rebase -i HEAD~3
  2. 指名要合并的版本之前的版本号

    git rebase -i 3a4226b

    请注意 3a4226b 这个版本是不参与合并的,可以把它当做一个坐标

3. 选取要合并的提交

  1. 执行了 rebase 命令之后,会弹出一个窗口,头几行如下:

    pick 3ca6ec3   '注释**********'
    
    pick 1b40566   '注释*********'
    
    pick 53f244a   '注释**********'
  2. pick 改为 squash 或者 s,之后保存并关闭文本编辑窗口即可。改完之后文本内容如下:

    pick 3ca6ec3   '注释**********'
    
    s 1b40566   '注释*********'
    
    s 53f244a   '注释**********'
  3. 然后保存退出,Git 会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

    git add .  
    
    git rebase --continue  

    如果你想放弃这次压缩的话,执行以下命令:

    git rebase --abort  
  4. 如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

    # This is a combination of 4 commits.  
    #The first commit’s message is:  
    注释......
    # The 2nd commit’s message is:  
    注释......
    # The 3rd commit’s message is:  
    注释......
    # Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.
  5. 输入 wq 保存并推出, 再次输入 git log 查看 commit 历史信息,你会发现这两个 commit 已经合并了。

还可参考其他:


我的分享
仅供参考
1 篇内容引用

你迷茫的原因往往只有一个,那就是在本该拼命去努力的年纪,想得太多,做得太少。

548 声望
12 粉丝
0 条评论
推荐阅读
composer install 和update、require的使用
composer install:如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;

nihao阅读 1.5k

封面图
git 常用命令 记录
有错误和改进的地方望留言,谢谢 : )顺便推荐一下,git入门教程Git 教程图解 GitPro Git 2(中文版)Git 使用Git 使用规范流程Git 工作流程Commit message 和 Change log 编写指南全局设置git config --system //...

Luff阅读 3.2k

git/pip/easy_install/apt代理/源设置
在公司内网环境中,访问公网往往需要经过公司的代理,对于浏览器、IDE等开发工具,都提供了设置代理的配置,而git、pip、easy_install等CLI工具,则需要通过命令或配置文件进行代理设置;对于Python、Ubuntu、Mav...

乘着风1阅读 5.5k

低代码开发重要工具:jvs-logic(逻辑引擎)2.1.6版本功能清单
逻辑引擎是一种能够处理逻辑表达式的程序,它能够根据用户输入的表达式计算出表达式的值。在实际应用中,逻辑引擎通常被用于处理规则引擎、决策系统、业务规则配置等领域,具有广泛的应用前景。前面几期我们了解...

软件部长2阅读 426

被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了
忙里偷闲学习了点技术写了点demo代码,打算提交到我那 2000Star 的Github仓库上,居然发现有5个Issues,最近的一条日期已经是2022/8/1了,以前我还真没留意过这些,我这人懒得很,本地代码提交成功基本就不管了。

程序员小富2阅读 1.4k评论 1

书写友好的提交信息
其中开头部分表明了本次提交的类型(是添加功能还是修复错误等),范围则描述了修改的影响面,然后是一段简要的描述,更多详细的信息则可以在正文中进行描述。

Kisstar阅读 3k

Coding 官方推出网站服务状态页面啦!
第一部分是系统运行状态。如下图,提示所有系统的运行状态,如 Coding 网站访问状态, Git 服务,QC 服务和 Paas 服务等:第二部分是系统指标。System Metrics 两个图表示的分别是 Coding 官方网站的实时响应时间...

CODING阅读 2.8k

你迷茫的原因往往只有一个,那就是在本该拼命去努力的年纪,想得太多,做得太少。

548 声望
12 粉丝
宣传栏