声明:迁移自本人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. 158-PHP strstr函数输出第一次出现字符串的位置到字符串结尾的所有字符串

    <?php $str='PHP is a very good programming language!'; //定义一个字符串 echo '第一次出现字母l的位置到字符串结尾的所有字符串'.s ...

  2. 102-PHP多维数组的元素输出

    <?php //定义一个三维数组 $grade=array('class1'=>array('stu1'=>array('yuwen'=>85,'shuxue'=>95, ...

  3. 在spark udf中读取hdfs上的文件

    某些场景下,我们在写UDF实现业务逻辑时候,可能需要去读取某个文件. 我们可以将此文件上传个hdfs某个路径下,然后通过hdfs api读取该文件,但是需要注意: UDF中读取文件部分最好放在静态代码 ...

  4. SPOJ DQUERY D-query 离线+树状数组

    本来是想找个主席树的题目来练一下的,这个题目虽说可以用主席树做,但是用这个方法感觉更加叼炸天 第一次做这种离线方法,所谓离线,就在把所有询问先存贮起来,预处理之后再一个一个操作 像这个题目,每个操作要 ...

  5. 电脑使用热键时是否需按住Fn键相关说明

    ThinkPad E系列机型 方法一: 在开机出现ThinkPad标志时,连续点F1(若无反应,请尝试Fn+F1)进入BIOS设置. 在BIOS中,依次选择Config---Keyboard/Mous ...

  6. Mac安装vue产生错误

    npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/_ ...

  7. windows内核安全编程书籍

    windows internals 的中文译本      windows内核原理与实现 版权声明:本文为博主原创文章,未经博主允许不得转载.

  8. BZOJ:1878: [SDOI2009]HH的项链

    题解:解法一:莫队 解法二:按区间左端点排序,让区间内最左边的贝壳对答案产生贡献,树状数组维护,转移对答案产生贡献的贝壳位置 #include<iostream> #include< ...

  9. oracle11g忘记管理员密码

    oracle的sys和system密码是我们经常忘记的,忘记之后我们可以通过sqlplus来修改重置. 首先打开sqlplus:在运行处可直接输入打开 进入窗口后,首先输入 sqlplus/as sy ...

  10. 碎碎念(DP)

    链接:https://ac.nowcoder.com/acm/contest/3006/F来源:牛客网 题目描述 在ACM比赛里,除了CE以外都是有效的提交.每一个提交都会有其评测的结果,或是AC,或 ...