git 合并多次提交


1 为何要合并多次 commit

方便 code review:多次提交后的远程会有多条历史记录,并且极有可能中间的一条记录并不是最终的代码,导致 code review 时的混乱

合并多次 commit 后,只会形成一条历史记录,这条记录中的代码修改即是最终的修改,只需要 review 这一条记录中的代码修改,就可以清楚最终的代码逻辑

2 导致多次 commit 的场景

自己做完一个功能后,觉得没问题后 commit,结果领导看完后说要修改某个小地方。这时修改后又会做一次 commit。而且很有可能不止一次打回重做,这样就会产生很多的 commit

3 合并本地多次提交

3.1 做3次提交

git 合并多次提交

 

3.2 开始合并

//以下命令表示合并 6f9b8ecc 往后的 commit(不包括 6f9b8ecc)

git rebase -i 6f9b8ecc

执行完命令出现以下界面

git 合并多次提交

将 pick 改为 s 得到以下界面

git 合并多次提交

修改完后保存退出得到以下界面

  • 可以合并 commit 提示:可以是所有功能的介绍,方便他人理解
  • 删除一下界面的原始提示,输入需要的提示

git 合并多次提交

3.3 rebase 完成后本地 log

git 合并多次提交

对比上图和第一张图,可以看出 3 个 commit 记录成功变成了 1 个

3.4 git push 后的远程 history

git 合并多次提交

4 合并远程多次提交1

4.1 做2次远程提交

git 合并多次提交

4.2 合并远程提交

  • 找到最新的不需要合并的 commitId
  • 之后的流程和合并本地流程一样

git 合并多次提交

4.3 和合并本地提交最后的区别

由下图可以看出,合并远程多次提交,之前的远程提交记录还在。虽然仍然可以只看合并后的记录,但 code review 仍然不太方便

git 合并多次提交

5 合并远程多次提交2

  • 如何使得合并远程多次提交,并 merge 到 master 分支后,master 分支只有一条合并历史记录呢?

5.1 解决方案

  • 只需在 4.2 的 rebase 命令前,将当前分支切换出一个新的分支
  • 然后在这个新的分支上进行 rebase 命令(这样就相当于合并本地 commit了),这样这个分支对应的远程分支也就一条记录了
  • 最后将这新分支 merge 到 master 中

参考

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

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:EFCore分组查询Group使用
下一篇:devexpress gridview显示分组group文本
评论列表

发表评论

评论内容
昵称:
关联文章

git 合并多次提交
git删除全部提交历史,成为一个新的仓库
git里commit提交后,修改描述内容
GZDBHelper中Excute方法,外部在同一链接下执行,如果要获取输出的参数值,用此方法执行,配合GetParamValue执行,或者多次提交
git 放弃本地修改
git仓库子模块(submodule)项目中的实战应用
GIT Bash 简单讲解-git如何推/拉代码
Visual Studio(VS) 集成 Git 的命令窗口 Git Bash
git rebase 找回丢失的代码
GIT彻底删除文件以及历史记录
JS合并两个数组的3种方法详解
EF事务提交
FastReport 打印多张报表合并打印
[实操] Windows下Git多账号SSH配置
git创建并切换分支
如何从Gitblit服务器恢复Git仓库:不需要重新部署
git-for-windows.exe 国内镜像下载
javascript表单Form转json进行ajax提交Jquery表单json提交
FastReport 合并多个报表,一次打印多个rpt文件
Microsoft Store 桌面应用发布流程(二)之提交应用

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码