合并提交
-
先创建多个commit
> git log --oneline 90e96fc (HEAD -> build-dev) 添加 func3 方法 0ac391c 添加 func2 方法 e828a9d 添加 func1 方法 ce801b5 (master) 合并5个提交
-
进行合并命令,合并 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 <提交> 可以编辑提交说明。 # # 可以对这些行重新排序,将从上至下执行。 # # 如果您在这里删除一行,对应的提交将会丢失。 # # 然而,如果您删除全部内容,变基操作将会终止。 # # 注意空提交已被注释掉
-
修改信息,把后面两个合并到第一个,形成新的提交, squash 表示保存修改,放到第一个提交里,wq保存
pick e828a9d 添加 func1 方法 squash 0ac391c 添加 func2 方法 squash 90e96fc 添加 func3 方法
-
修改提交备注
# 这是一个 3 个提交的组合。 # 这是第一个提交说明: 添加 func1 方法 # 这是提交说明 #2: 添加 func2 方法 # 这是提交说明 #3: 添加 func3 方法 # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交 # 说明将会终止提交。
修改为以下,wq保存
合并三个请求 # 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交 # 说明将会终止提交。
-
最终效果
d57f985 (HEAD -> build-dev) 添加 func1 方法 ce801b5 (master) 合并5个提交 ----- 以前样子 ----- 90e96fc (HEAD -> build-dev) 添加 func3 方法 0ac391c 添加 func2 方法 e828a9d 添加 func1 方法 ce801b5 (master) 合并5个提交
变基
-
目的在于保持提交历史的整洁
在当前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个提交