转自: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相关推荐

  1. Git详解之七 自定义Git

    Git详解之七 自定义Git 自定义 Git 到目前为止,我阐述了 Git基本的运作机制和使用方式,介绍了 Git提供的许多工具来帮助你简单且有效地使用它.在本章,我将会介绍 Git的一些重要的配置方 ...

  2. 绿建科技加密图纸查看器安装_施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚...

    施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚 只要是对建筑行业,有所了解的朋友都清楚,钢筋施工图纸对于建筑物,有着举足轻重的地位!一点都不得马虎大意,接触建筑行业,第一步还是需 ...

  3. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  4. git删除本地所有未提交的更改

    1.git 删除本地所有未提交的更改 git checkout . && git clean -xdf 一般 git clean都是配合git reset 使用的 如果你有的修改已经加 ...

  5. [转]Git详解之五 分布式Git

    分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库.经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令.接下来,我们要学习下如何利用 ...

  6. Git详解之五 分布式Git

    以下内容转载自:http://www.open-open.com/lib/view/open1328070090108.html 分布式 Git 为了便于项目中的所有开发者分享代码,我们准备好了一台服 ...

  7. 详解ADO.NET操作数据库合力创享

    详解ADO.NET操作数据库 第一步:http://dl.dbank.com/c0h28bwpss 第二步:http://dl.dbank.com/c0xkrkgp9i 第三步:http://dl.d ...

  8. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  9. Git详解之九 Git内部原理

    以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...

最新文章

  1. 数据通信技术(一:IP划分)
  2. 047_CSS3多列
  3. P2617 Dynamic Rankings(整体二分)
  4. mysql——JDBC
  5. trim的返回值php,php trim()函数
  6. 达内培训c语言,【达内C  培训教程】C语言实例 分数之和
  7. 一个事务中 可以查询自己未提交的数据吗_数据库事务
  8. 第一章 CLR执行模型
  9. (五)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?(1)
  10. 并发编程面试题(2020最新版)
  11. 我的个人博客live2d插件模型模块汇总(仅本人可使用,无需看)
  12. Presto Facebook 开源的大数据查询引擎
  13. Exploratory Social Network Analysis with Pajek(第三版)11
  14. java分流什么意思_Flink如何分流数据
  15. 【钉钉-场景化能力包】制造业订单交付全过程管理
  16. 专访笨叔叔:2019年可能是Linux年?
  17. [软件教程]专业屏幕捕捉软件 HyperSnap-DX 使用教程
  18. IIS无法下载文件的原因及解决方法
  19. DNS服务详解及正向解析与反向解析
  20. 码农飞升记-03-OpenJDK是什么?

热门文章

  1. VR社交软件测试-AltspaceVR
  2. 局域网考服务器文件就死机,连接局域网死机的解决方法
  3. 高通msm89xx使能RNDIS网络功能遇到的问题
  4. 写入的原彩可以升级系统吗_更换屏幕后“原彩显示”依旧可用,能否确定为原装屏?...
  5. 项目八学好英语网html,网上学习八年级英语
  6. java ftp 文件移动文件_通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等...
  7. 思维造物IPO:从知识付费到终身教育,罗振宇的新故事可行吗?
  8. turtle画简笔画---便便
  9. 天玑1000plus和骁龙865哪个好
  10. sk_buff数据结构详解