详解如何使用git sqush合并多次未提交commit
转自:https://www.cnblogs.com/dsxniubility/p/4460834.html
1.git squash技术
在使用git作为源代码管理器时,需要时不时将自己所作出的改变commit,以便查询。工作中是建议稍微做一些小的改动就commit的,因为提交的越细看着越清楚。但是当在将自己的代码仓库改过许多细节提交到服务器建立一个pull request时,有时需要将琐碎的多个commit结合起来形成这一个需求的完整commit。这时就需要使用git squash来整理压缩message。
当我修改了四个文件并且每一个步骤都是分开提交的,我的项目git log显示如下:
如果将每一个commit都建立pr并提交到主代码仓库,主库的修改版本会非常多,为今后的维护也加大了难度。如果使用git squash技术可以将多个log集结到一起。 关于具体的代码操作可见下面完整PR操作步骤。
2.完整PR操作步骤
1.git remote -v 先查看下起源避免出错
2.git checkout ChangeBadCode 先切换到自己的项目分支
3.git log 查看下日志,并判断需要将多少个日志合并
4.git rebase -i HEAD~6 把顶部的六个版本聚到一起进入编辑页面
5.把需要压缩的日志前面的pick都改为s(squash的缩写)
这里要注意必须保留一个pick,如果将所有的pick都改为了s那就没有合并的载体了就会报如下错误
这时就只能使用 git rebase --continue 继续编辑或git rebase --abort 取消此次操作来解决问题才能进入下一步。
6.(前面的操作无误的话)输入:wq保存并退出这时出现修改message页面
7.使用vim指令把每个message之间的空格行给删除,并输入:wq
最终达到的效果是这样
8. 想获取develop的最新版本必须先切换到develop --------git checkout develop
9. git pull origin develop 获取最新的develop版本
10. 需要先切换到自己的分支,才能对develop进行rebase -----git checkout NewFix
11. git rebase develop 把自己新开发的功能快进最新版本
12. 这时候需要先切换到主干才能把自己的分支合并 ------git checkout develop
13. git merge NewFix 这时候才能合并
14. git push origin develop 推到自己的起源代码仓库
15. 在网页上创建pull request向管理员提交变更
附加几个常用指令(后续继续增加):
git branch 查看分支
git reflog 查看这个项目的修改记录
git log --graph --oneline 显示前六位log码和对应的message
git checkout -b NewFix 在主分支上建立一个新的分支。
git cherry-pick ChangeBadCode 在新的分支上复制旧分支的改变
git branch -d ChangeBadCode 删除一个分支。 -D是强制删除
git add . 把改动全部加上。 (可以先用git status显示出不同的diff)然后add 单个文件
git commit --amend 给刚提交的commit订一下,但是不生成log
详解如何使用git sqush合并多次未提交commit相关推荐
- Git详解之七 自定义Git
Git详解之七 自定义Git 自定义 Git 到目前为止,我阐述了 Git基本的运作机制和使用方式,介绍了 Git提供的许多工具来帮助你简单且有效地使用它.在本章,我将会介绍 Git的一些重要的配置方 ...
- 绿建科技加密图纸查看器安装_施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚...
施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚 只要是对建筑行业,有所了解的朋友都清楚,钢筋施工图纸对于建筑物,有着举足轻重的地位!一点都不得马虎大意,接触建筑行业,第一步还是需 ...
- java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...
详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...
- git删除本地所有未提交的更改
1.git 删除本地所有未提交的更改 git checkout . && git clean -xdf 一般 git clean都是配合git reset 使用的 如果你有的修改已经加 ...
- [转]Git详解之五 分布式Git
分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库.经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令.接下来,我们要学习下如何利用 ...
- Git详解之五 分布式Git
以下内容转载自:http://www.open-open.com/lib/view/open1328070090108.html 分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服 ...
- 详解ADO.NET操作数据库合力创享
详解ADO.NET操作数据库 第一步:http://dl.dbank.com/c0h28bwpss 第二步:http://dl.dbank.com/c0xkrkgp9i 第三步:http://dl.d ...
- Git详解之六:Git工具
Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...
- Git详解之九 Git内部原理
以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...
最新文章
- 数据通信技术(一:IP划分)
- 047_CSS3多列
- P2617 Dynamic Rankings(整体二分)
- mysql——JDBC
- trim的返回值php,php trim()函数
- 达内培训c语言,【达内C 培训教程】C语言实例 分数之和
- 一个事务中 可以查询自己未提交的数据吗_数据库事务
- 第一章 CLR执行模型
- (五)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?(1)
- 并发编程面试题(2020最新版)
- 我的个人博客live2d插件模型模块汇总(仅本人可使用,无需看)
- Presto Facebook 开源的大数据查询引擎
- Exploratory Social Network Analysis with Pajek(第三版)11
- java分流什么意思_Flink如何分流数据
- 【钉钉-场景化能力包】制造业订单交付全过程管理
- 专访笨叔叔:2019年可能是Linux年?
- [软件教程]专业屏幕捕捉软件 HyperSnap-DX 使用教程
- IIS无法下载文件的原因及解决方法
- DNS服务详解及正向解析与反向解析
- 码农飞升记-03-OpenJDK是什么?
热门文章
- VR社交软件测试-AltspaceVR
- 局域网考服务器文件就死机,连接局域网死机的解决方法
- 高通msm89xx使能RNDIS网络功能遇到的问题
- 写入的原彩可以升级系统吗_更换屏幕后“原彩显示”依旧可用,能否确定为原装屏?...
- 项目八学好英语网html,网上学习八年级英语
- java ftp 文件移动文件_通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等...
- 思维造物IPO:从知识付费到终身教育,罗振宇的新故事可行吗?
- turtle画简笔画---便便
- 天玑1000plus和骁龙865哪个好
- sk_buff数据结构详解