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 
  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合并提交和变基)