idea使用Git插件版本控制,交互式变基,rebase

本文是idea2020.3月版本,旧版本使用起来有细微区别

主分支master,基于master拉的功能分支master_skk

此时master_skk分支上,新增了2个提交记录,领先master分支2个提交记录,而master分支上,新增了1个提交记录,即master_skk分支相比于master主分支,落后一个提交,领先二个提交!

为了保证git提交记录的简洁及便于代码回退,需要rebase交互式变基,既获取落后于master的的最新提交记录,又压缩自己的多次提交记录为一条,最终效果变为0/1

首先切换到自己的分支master_skk, 然后pull拉取最新代码,然后按照下图序号进行操作

选中想合并的提交记录,然后选中图6标识的Squash,具体和fixup,reword等区别,看文末链接

如图可以看到,变基成功,不仅获取了master最新的提交记录,自己的提交记录也压缩成了一条!

如果自己分支的几个提交都是本地的,还没有提交到远程分支master_skk上,那么就可以直接push推到远程,但一般我们总要合自己代码到dev/test,所以必然是已经提交到自己远程分支上了, 此时当你去push你的commit时,会再次与你远程分支的commit合并,之前本地rebase的那些commit又会出现了。所以,如果想rebase远程分支,那么还需要下面一个步骤

(1)这个远程分支只有你一个人在开发

此时没有其他人会进行提交操作,那么可以直接进行强制推送  git push -f

–f可以直接理解为用你本地分支的状态区覆盖掉远端origin分支的状态,也就是执行过后,本地的分支什么样,远端分支就什么样

(2)远程分支有多人开发

此时如果你贸然的使用--force命令,会有覆盖掉其他人提交代码的风险。比如,小明和小红两个人同时在feature分支上进行开发,小明已经在feature分支上提交了一部分代码,而小红此时执行了rebase操作,所以如果想要推送到远端仓库就必须使用 --force 参数,而小红推送成功之后就会覆盖掉小明提交的代码(前面说过--force就是用本地状态覆盖掉远端状态)。在这种情况下,推荐另外一种更安全的命令

git push --force-with-lease

使用该命令在强制覆盖前会进行一次检查如果其他人在该分支上有提交会有一个警告,此时可以避免覆盖代码的风险。

如图9 我用命令推送远程后,才是实际的交互式变基成功!

此时如果查看gitlab,自己的分支应该是最佳的0/1了

这时候,如果自己没有合分支到的master权限,就点击图上的merge request,让有权限的人合自己的分支代码,如果有权限直接切换到master分支, 拉取最新master代码,  然后如图10操作

此时可以看到,master已经合好了功能分支master_skk的代码,且只有1条合并记录(第1次提交),并且位于master的新增提交(master主分支新增文件2)之后!

图11操作后,自己代码完全合到master分支,告一段落!

参考链接:

idea上实现git rebase操作,适用于老版本idea,有讲解rebase几种方式的区别

在idea上实现git rebase操作_xiaowei_582648206的博客-CSDN博客_idea rebase

idea git rebase reset合并多条commit记录变为一条,二种方式讲解

idea git rebase 和reset合并多条commit记录变为一条_我叫周利东的博客-CSDN博客_idea rebase合并多次提交

idea新版2020.03  git rebase操作

GIT系列-合并多次提交 - 知乎

Git 更安全的强制推送,--force-with-lease

Git 更安全的强制推送,--force-with-lease - walterlv - 博客园

idea使用Git插件版本控制,交互式变基,rebase相关推荐

  1. git 合并提交(交互式变基)

    在代码没有pull前我们可以在本地分支进行提交的合并.这样会使得远程分支不去关心本地开发过程日志,而使得远程日志干净整洁. 变基前log 找到要合并的第一条log,然后右键选择Interactivel ...

  2. sourcetree交互式变基

    假如现在有2个提交都还没有合并 sourcetree上排列顺序为 提交2 提交1 整理代码为2,2是基于1的 如果我想修改1,就需要在1的前置提交(图中的 中英文切换 上鼠标右键 选择交互式变基XXX ...

  3. 学习如何使用 Git 来压扁、变基和精选

    学习如何使用 Git 来压扁.变基和精选. 当我与别人谈到 Git 时,几乎每个人都对 git rebase 命令 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录.删除仓库.然后再重新克隆 ...

  4. git 查询提交明细_Git [提交记录查看、提交、变基](I)

    查看提交记录 终端命令 git log:列出历史提交记录; 记录查看 git log --oneline:查看历史记录的简洁的版本; 简洁记录查看 提交 提交规范 feat: 新功能 fix: 修复问 ...

  5. Git之深入解析Git的杀手级特性·分支管理与分支变基的开发工作流以及远程分支的跟踪

    一.Git 分支简介 几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程,常常需要完全创建一个源代 ...

  6. git使用变基方式同步远程和本地副本的代码同步方式

    一.确保你父分支的本地副本与项目主仓库中最新的提交同步 git pull --rebase 若有必要, 请显式指定参数.在使用 pull 命令更新一个分支的本地副本时,参数中远程连接和远程分支的名称通 ...

  7. git rebase 变基

    概念 变基(Rebase)也是合代码的一种手段. 变基与合并(Merge)不同的是,他可以修改历史,使用rebase来代替merge合代码的话,得到的历史记录是一条直线提交历史,无分叉,很漂亮. 然而 ...

  8. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

  9. 变基的风险以及如何用变基解决变基

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/50724116 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. C#操作Access数据库中遇到的问题(待续)
  2. 干货:如何在前端统计用户访问来源?
  3. SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor
  4. typescript 接口 interface 的理解
  5. slf4j+logback 日志
  6. Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so
  7. success.php
  8. Operation和OperationQueue详解
  9. 宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
  10. 王之泰201771010131《面向对象程序设计(java)》第十三周学习总结
  11. retina屏下的1px线的实现
  12. 四个Channel的讲解
  13. Revit二次开发——自动标注钢筋思路(3)
  14. 汉语拼音的5个声调该怎么学?
  15. TextSymbol使用方法
  16. 实现TextView尾部追加可点击的Icon和文本
  17. java的几种基本数据类型及其大小
  18. linux 进程流量统计,Linux进程网络流量统计方法及实现
  19. 同济大学Python程序设计基础 实验九:数据可视化
  20. android+待办事项+日历,TickTick Pro「滴答清单」v5.9.4.4 for Android 直装解锁高级版 —— 一个强大的待办事项和任务管理应用...

热门文章

  1. linux kworker
  2. 创龙OMAPL138 Linux系统修改静态IP地址
  3. 利用win10的Linux子系统在PC上搭建git远程仓库
  4. 【谷粒商城高级篇】Elasticsearch:全文检索
  5. git创建本地分支,远程分支
  6. 2020年6月下旬,离开工作了三年多的老东家
  7. MySQL gtid purge_MySQL-GTID复制
  8. 什么是实时3D渲染?实时逼真图形背后的软件技术
  9. Python学生管理系统——面向对象版本
  10. 选对婚纱珠宝 做最佳风格新娘