git 合并多次提交

1 为何要合并多次 commit
  • 方便 code review:多次提交后的远程会有多条历史记录,并且极有可能中间的一条记录并不是最终的代码,导致 code review 时的混乱
  • 合并多次 commit 后,只会形成一条历史记录,这条记录中的代码修改即是最终的修改,只需要 review 这一条记录中的代码修改,就可以清楚最终的代码逻辑
2 导致多次 commit 的场景
  • 自己做完一个功能后,觉得没问题后 commit,结果领导看完后说要修改某个小地方。这时修改后又会做一次 commit。而且很有可能不止一次打回重做,这样就会产生很多的 commit
3 合并本地多次提交
3.1 做3次提交

在这里插入图片描述

3.2 开始合并
//以下命令表示合并 6f9b8ecc 往后的 commit(不包括 6f9b8ecc)
git rebase -i 6f9b8ecc

执行完命令出现以下界面
在这里插入图片描述
将 pick 改为 s 得到以下界面
在这里插入图片描述
修改完后保存退出得到以下界面

  • 可以合并 commit 提示:可以是所有功能的介绍,方便他人理解
  • 删除一下界面的原始提示,输入需要的提示
    在这里插入图片描述
3.3 rebase 完成后本地 log

在这里插入图片描述

  • 对比上图和第一张图,可以看出 3 个 commit 记录成功变成了 1 个
3.4 git push 后的远程 history

在这里插入图片描述
在这里插入图片描述

4 合并远程多次提交1
4.1 做2次远程提交

在这里插入图片描述

4.2 合并远程提交
  • 找到最新的不需要合并的 commitId
  • 之后的流程和合并本地流程一样
    在这里插入图片描述
4.3 和合并本地提交最后的区别
  • 由下图可以看出,合并远程多次提交,之前的远程提交记录还在。虽然仍然可以只看合并后的记录,但 code review 仍然不太方便
    在这里插入图片描述
5 合并远程多次提交2
  • 如何使得合并远程多次提交,并 merge 到 master 分支后,master 分支只有一条合并历史记录呢?
5.1 解决方案
  • 只需在 4.2 的 rebase 命令前,将当前分支切换出一个新的分支
  • 然后在这个新的分支上进行 rebase 命令(这样就相当于合并本地 commit了),这样这个分支对应的远程分支也就一条记录了
  • 最后将这新分支 merge 到 master 中
参考

git 几个commit点合并成一个commit点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值