• git rebase合并多个commit记录


    在做一个需求的时候,会出现多次提交记录,如下:

    15595@С̫□□ MINGW64 /d/project/ps-webpage (myj_beifen)
    $ git log --pretty=format:'%h: %s'
    03d1e8bc6: 订单修改
    578639f96: 订单详情
    74f2bc950: 订单详情
    7d22e5fcc: 订单详情
    03cacded5: [feat][1003997]:订单详情
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    其中,发现中间有三次提交的记录一致,是可以合并成一次commit

    下面开始合并:
    1.找到要合并的commit
    命令

    git rebase -i  [startpoint]  [endpoint]
    
    • 1

    其中 -i 的意思是–interact,即弹出交互式的界面让用户编辑完成合并操作

    [startpoint] [endpoint]是前开后闭的区间
    [startpoint]是指需要合并的commit的前一个commit,在上面的例子中。[startpoint]就是03cacded5: [feat][1003997]:订单详情
    [endpoint]一般是省略不写的,默认从起始的commit一直到最后一个commit,但是如果写了[endpoint],那么[endpoint]后面的commit就全都不要了,所以要慎用!

    git rebase -i 03cacded5
    
    • 1

    2.进入interact交互页面
    执行git rebase -i 03cacded5后,终端会进入交互页面,如下:
    在这里插入图片描述
    上面红框里的,使我们筛选出来要合并的commit,是按时间顺序依次往下排序的,和git log展示的顺序是相反的
    pick对应了下面红框里的commands展示第一个命令p,表示使用commit

    3.使用s命令,合并commit
    先按键盘 i 键,进入操作模式,把第二个和第三个commit的pick都改成s
    改完之后,按 esc 键退出操作模式
    然后按 :wq保存操作并退出
    在这里插入图片描述
    注意:如果这里将第一个pick也改成s,则会报错
    在这里插入图片描述
    在这里插入图片描述
    其中第一个s就已经给提示了,他是红色的,为什么会失败呢,是因为squash也就是s的作用是把commit合并到上一个提交,所以需要保证第一个提交是pick,出现这种情况的话,就执行

    git rebase --abort
    
    • 1

    重来一次,这样最稳妥。
    点击了解,git rebase --abort

    4.修改commit记录
    如果第三步成功后,接下来会弹出下面这个页面,分别展示了三个commit的提交信息
    在这里插入图片描述
    我们只需要把第二条和第三条的信息注释掉即可,即按i 键,在第二个和第三个订单详情前面加#号,然后按 esc,最后:wq保存即可
    在这里插入图片描述
    5.查看最新合并情况
    执行 git log --pretty=format:‘%h: %s’,发现之前的三次commit合并成了一次commit,成功!
    在这里插入图片描述
    扩展:

    命令缩写用法
    pickp保留该commit
    rewordr2保留该commit,但需要修改该commit的注释
    edite保留该commit, 但我要停下来修改该提交(不仅仅修改注释)
    squashs将该commit合并到前一个commit
    fixupf将该commit合并到前一个commit,但不要保留该提交的注释信息
    exece执行shell命令
    dropd丢弃该commit
  • 相关阅读:
    协议栈——收发数据(拼接网络包,自动重发,滑动窗口机制)
    “我在 iPhone 上,创建了个 ChatGPT 快捷方式,这也太万能了……”
    css:img引入svg后修改颜色
    深度操作系统 23预览版:自研软件包格式
    【毕业设计】单片机与NBIOT通信模块 - 单片机 物联网 stm32
    Node.js 中的进程和线程
    沉睡者 - 怎么样可以在网络上挣钱,告诉你网上挣钱的5种方法!
    GBJ2510-ASEMI电机专用25A整流桥GBJ2510
    Pytest+Allure生成可添加附件的测试报告
    ssm和springboot整合
  • 原文地址:https://blog.csdn.net/weixin_46074961/article/details/126540418