Git合并提交和变基

合并提交
  1. 先创建多个commit

    > git log --oneline
    
    90e96fc (HEAD -> build-dev) 添加 func3 方法
    0ac391c 添加 func2 方法
    e828a9d 添加 func1 方法
    ce801b5 (master) 合并5个提交
    
  2. 进行合并命令,合并 ce801b5 (合并5个提交) 之后的提交

    > git rebase -i ce801b5
    
    pick e828a9d 添加 func1 方法
    pick 0ac391c 添加 func2 方法
    pick 90e96fc 添加 func3 方法
    
    # 变基 ce801b5..90e96fc 到 ce801b5(3 个提交)
    #
    # 命令:
    # p, pick <提交> = 使用提交
    # r, reword <提交> = 使用提交,但修改提交说明
    # e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
    # s, squash <提交> = 使用提交,但融合到前一个提交
    # f, fixup <提交> = 类似于 "squash",但丢弃提交说明日志
    # x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
    # b, break = 在此处停止(使用 'git rebase --continue' 继续变基)
    # d, drop <提交> = 删除提交
    # l, label <label> = 为当前 HEAD 打上标记
    # t, reset <label> = 重置 HEAD 到该标记
    # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
    # .       创建一个合并提交,并使用原始的合并提交说明(如果没有指定
    # .       原始提交,使用注释部分的 oneline 作为提交说明)。使用
    # .       -c <提交> 可以编辑提交说明。
    #
    # 可以对这些行重新排序,将从上至下执行。
    #
    # 如果您在这里删除一行,对应的提交将会丢失。
    #
    # 然而,如果您删除全部内容,变基操作将会终止。
    #
    # 注意空提交已被注释掉
    
  3. 修改信息,把后面两个合并到第一个,形成新的提交, squash 表示保存修改,放到第一个提交里,wq保存

    pick e828a9d 添加 func1 方法
    squash 0ac391c 添加 func2 方法
    squash 90e96fc 添加 func3 方法
    
  4. 修改提交备注

    # 这是一个 3 个提交的组合。
    # 这是第一个提交说明:
    
    添加 func1 方法
    
    # 这是提交说明 #2:
    
    添加 func2 方法
    
    # 这是提交说明 #3:
    
    添加 func3 方法
    
    # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
    # 说明将会终止提交。
    

    修改为以下,wq保存

    合并三个请求
    
    # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
    # 说明将会终止提交。
    
  5. 最终效果

    d57f985 (HEAD -> build-dev) 添加 func1 方法
    ce801b5 (master) 合并5个提交
    
    ----- 以前样子 -----
    
    90e96fc (HEAD -> build-dev) 添加 func3 方法
    0ac391c 添加 func2 方法
    e828a9d 添加 func1 方法
    ce801b5 (master) 合并5个提交
    
变基
  1. 目的在于保持提交历史的整洁

    在当前buid-dev分支进行拉取master分支提交记录,找到共同的父提交

    build-dev分支
    d57f985 (HEAD -> build-dev) 添加 func1 方法
    ce801b5 合并5个提交
    
    master分支
    0d59544 (HEAD -> master) 修改dev为master方法
    ce801b5 合并5个提交
    

    执行命令

    // 拉取master的提交记录进行合并
    > git rebase master
    // 效果
    d90494f (HEAD -> build-dev) 添加 func1 方法
    0d59544 (master) 修改dev为master方法
    ce801b5 合并5个提交
    

    执行命令

    // 切换主分支
    > git checkout master
    
    // 进行合并
    > git merge build-dev
    
    // 查看效果
    > git log --oneline 
    
    d90494f (HEAD -> master, build-dev) 添加 func1 方法
    0d59544 修改dev为master方法
    ce801b5 合并5个提交
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,125评论 4 18
  • 一、Git学习总结的命名 初始化一个Git仓库。 添加文件到Git仓库步骤分两步:使用命令git add <fil...
    Cheriez阅读 464评论 0 1
  • 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由...
    八宝君阅读 324评论 0 0
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,464评论 0 7
  • 教程网址:http://www.liaoxuefeng.com/wiki/0013739516305929606d...
    maybenai阅读 707评论 0 1