声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635

我们平时在写代码的时候,难免会修修改改,如果团队中每个人的代码提交记录都包含着一堆中间过程,是很不利于团队成员查看主干分支的代码提交记录的。
下面就是一个不好的例子,本地pull主干分支后,肯定希望看到的是特性开发、问题修改的记录,而不是这样一堆的中间过程。

解决这个问题,一种可行的做法是先在本地分支上执行rebase操作再push到远程个人分支,然后再执行合并到主干分支的Merge Request。
下面的远程分支操作基于iSource,比如,现在往远程个人分支push了3次本地分支修改,远程个人分支往主干Merge前,提示有如下commit信息。

现在的目的就是在Merge到主干前将这些commit rebase为一个提交记录。
本地仓库分支rebase具体操作如下。
step1:testRebase1、testRebase2、testRebase3是本地最新的3个commit,故可执行
git rebase -i HEAD~3
进入如下界面

step2:根据自己的需要合并和修改这些commit。修改和保存这个界面的文本信息的过程与vi操作类似,比如执行get rebase -i HEAD~3后进入的是命令模式,点击按键 i 进入编辑模式,此时可以对内容进行修改,修改完后点击按键 Esc 退出编辑模式进入命令模式,命令行模式下输入 “:” 进入末行模式,在末行模式下输入wq回车即可保存修改。

保存后自动进入commit message编辑界面

编辑为自己需要的message,如下图示例

再次退出保存,无误的话,git shell界面提示如下信息

再次将本地分支push到远程非人分支,远程个人分支往主干Merge前,就只提示一条commit记录了,如下图。

本地查看日志记录,结果如下。可以看到以前的3条中间过程的commit信息已经没了,剩下的是1条合并后的信息。

后记:
本地分支的rebase操作要求分支是纯净的,即不能有未提交的代码,但是实际操作中肯定会出现一些代码修改了但是现在还不想提交的,所以如果每次都要执行下git stash save/git stash pop操作。理论上完全可以在远程个人分支上执行rebase操作,避免本地分支频繁的get stash操作, 因为远程分支一般都是我们从个人分支push上去的,不会有未提交的修改这类问题,且理论上远程分支和本地分支地位是对等的。然而,实际中很多系统不允许执行远程分支的rebase操作,比如本文作者在实际工作中遇到的就是这种情况,所以还是按部就班在本地执行rebase再push到远程个人分支吧。
如果不习惯使用git shell,git GUI界面也可以完成这些操作,道理都是一样的。

操作实践,git本地分支执行rebase,让主干分支记录更简洁的更多相关文章

  1. Git -- 本地 一个相同的新的分支 并 推送到远程仓库

    (一).创建本地分支 git checkout -b 新分支名 执行该指令后,会在本地创建一个新分支,该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样,这是正常的.创建成功后,将自动切 ...

  2. Git知识总览(六) Git分支中的远程操作实践

    前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...

  3. Git分支中的远程操作实践

    Git分支中的远程操作实践 前几篇博客陆陆续续的讲了好多关于Git操作的内容, 其中在上篇博客聊了<Git中的merge.rebase.cherry-pick以及交互式rebase>,本篇 ...

  4. 【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 本地分支】

    ============================================ 明确一点: 如果项目交给git管理了[如何将项目交给git管理:https://www.cnblogs.com ...

  5. git 本地分支与远程分支相关操作记录

    1.远程分支中有新增分支,但自己的本地分支没有对应同步 git checkout -b [remote-branch-name] origin/[remote-branch-name] 2. 查看本地 ...

  6. git远程删除分支后,本地执行git branch -a依然能看到删除分支到底该咋整?

    使用命令git branch -a可以查看所有本地分支和远程分支(git branch -r 可以只查看远程分支) 如果发现很多在远程仓库已经删除的分支在本地依然可以看到到底该怎么办呢?(反正强迫症受 ...

  7. git的学习笔记(一):git本地操作

    1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...

  8. Git 本地操作

    版权声明:数学是研究世界的本质,自然科学是研究上帝的意志,而计算机则是揣摩屌丝人类的意志   目录(?)[-] 命令 git config 增删改查 init clone add commit sta ...

  9. git分支管理--rebase&merge详解

    目录 分支合并 git merge --squash [分支名] 注意点 git rebase [分支名] git rebase git rebase --abort git rebase -i gi ...

随机推荐

  1. 如何创建一个Asp .Net Web Api项目

    1.点击文件=>新建=>项目 2.创建一个Asp .NET Web项目 3.选择Empty,然后选中下面的MVC和Web Api,也可以直接选择Web Api选项,注意将身份验证设置为无身 ...

  2. 提交作业 C语言I作业11

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/10127 我在这个课程的目标 ...

  3. 面试题(9)之 leetcode-189

    题目描述 解法一: /** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, ...

  4. nidlist 问题

    错误问题如下: 解决方案: Dao文件 boolean DeleteList(String nidList); 改为: boolean DeleteList(@Param("nidList& ...

  5. 十二、React 生命周期函数

    React生命周期函数: [官方文档]:https://reactjs.org/docs/react-component.html [定义]组件加载之前,组件加载完成,以及组件更新数据,组件销毁. 触 ...

  6. 【剑指Offer】面试题04. 二维数组中的查找

    题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: 现 ...

  7. 面向对象-static关键字实战案例

    面向对象-static关键字实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.static关键字概述 1>.static的功能 static关键字用于修饰成员变量和 ...

  8. IE8兼容问题汇总

    一.css的hack写法 IE8 CSS hack 就是在属性后面加上 \9 或者 \0,代码如下: color:#FFF\0; /* IE8 */ color:#FFF\9; /* 所有IE浏览器( ...

  9. 刷题48. Rotate Image

    一.题目说明 题目是48. Rotate Image,简而言之就是矩阵顺时针旋转90度.不允许使用额外的矩阵. 经过观察(写一个矩阵,多看几遍就知道了),旋转90度后: 第1行变为len-1列(最后一 ...

  10. 【机器学习实战学习笔记(1-2)】k-近邻算法应用实例python代码

    文章目录 1.改进约会网站匹配效果 1.1 准备数据:从文本文件中解析数据 1.2 分析数据:使用Matplotlib创建散点图 1.3 准备数据:归一化特征 1.4 测试算法:作为完整程序验证分类器 ...