操作实践,git本地分支执行rebase,让主干分支记录更简洁
声明:迁移自本人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,让主干分支记录更简洁的更多相关文章
- Git -- 本地 一个相同的新的分支 并 推送到远程仓库
(一).创建本地分支 git checkout -b 新分支名 执行该指令后,会在本地创建一个新分支,该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样,这是正常的.创建成功后,将自动切 ...
- Git知识总览(六) Git分支中的远程操作实践
前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...
- Git分支中的远程操作实践
Git分支中的远程操作实践 前几篇博客陆陆续续的讲了好多关于Git操作的内容, 其中在上篇博客聊了<Git中的merge.rebase.cherry-pick以及交互式rebase>,本篇 ...
- 【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 本地分支】
============================================ 明确一点: 如果项目交给git管理了[如何将项目交给git管理:https://www.cnblogs.com ...
- git 本地分支与远程分支相关操作记录
1.远程分支中有新增分支,但自己的本地分支没有对应同步 git checkout -b [remote-branch-name] origin/[remote-branch-name] 2. 查看本地 ...
- git远程删除分支后,本地执行git branch -a依然能看到删除分支到底该咋整?
使用命令git branch -a可以查看所有本地分支和远程分支(git branch -r 可以只查看远程分支) 如果发现很多在远程仓库已经删除的分支在本地依然可以看到到底该怎么办呢?(反正强迫症受 ...
- git的学习笔记(一):git本地操作
1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...
- Git 本地操作
版权声明:数学是研究世界的本质,自然科学是研究上帝的意志,而计算机则是揣摩屌丝人类的意志 目录(?)[-] 命令 git config 增删改查 init clone add commit sta ...
- git分支管理--rebase&merge详解
目录 分支合并 git merge --squash [分支名] 注意点 git rebase [分支名] git rebase git rebase --abort git rebase -i gi ...
随机推荐
- P-数学程序猿今天开始写博客了
∧ /| /\7 ≤_/ ∧. | | / / / 〉 | Z_,< / ...
- sping MVC 定时任务的设置
项目中用到了定时任务,写一篇随笔记录一下. 首先在Spring的配置文件ApplicationContext.xml文件的beans标签中添加 xmlns:task="http://www. ...
- P1031 查验身份证
转跳点:
- C++的vector容器清空
c++内部STL库中自带了一个容器vetcor, 自带了清空方法——clear().但是clear使用之后,并不能清空数据,其数据再未被覆盖之前是不会改变的,个人猜测clear仅仅把指针挪动到了起始位 ...
- Arduino - ( Uno、Nano、Promini)针脚示意图
Uno针脚示意图 Nano针脚示意图 Promini针脚示意图
- Canvas绘制水波进度加载
效果: 用到图片下载: 自定义View: package com.czm.mysinkingview; import android.content.Context; import android.g ...
- AP架构基本过程
①.有线网络搭建(vlan,dhcp,路由等.) ②.ap零配置启动,通过dhcp获取IP地址及网关ip,同时获取ac ip地址. ③.AP主动建立到达ac的capwap隧道. ④.ap与ac建议隧道 ...
- tortoiseGit 的简单使用说明
拉取仓库到本地 参考 下面几张图片,把仓库拉取到本地. 本地修改并推送 进入文件夹后,按照 下面几张图片切换到本地的开发分支 当修改完成之后,按照 下面几张图片 的方法把修改推送到远程仓库的开发分支. ...
- jquery散记
感觉jquery的用法都要忘没了,简单捡一下 1.window.onload与$(document).ready的区别 ()编写个数 window.onload = function(){} //不能 ...
- Day 10:浅谈正则表达式
正则表达式 以检验扣扣号是否合法为例引入正则表达式 要求:校验QQ号,要求:必须是5~15位数字,0不能开头. 1.没有正则表达式 public class Demo1 { public static ...