低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Git 2.22:保留拓扑和交互式 Rebase

2019 年 7 月 21 日

Git 2.22:保留拓扑和交互式 Rebase

Git发布的最新版本Git 2.22中,最重要的新功能是,它支持”变基“(rebase)复杂的分支拓扑,例如,对于那些合并后不会扁平化分支拓扑的合并,也允许使用交互式的“变基”功能。


在基础分支(如 master 分支)发生变更后再合并其他功能分支时,”变基“提交是保持 Git 历史记录线性的好方法。在这种情况下,为了保证这两个分支不丢失任何变更,Git 的标准做法是,将 master 合并到功能分支上,然后再尝试将功能分支合回 master。这期间,我们不仅可以解决 Git 无法自己解决的任何合并冲突,而且 Git 还将创建一个 master 分支的提交拓扑,该拓扑在需要三向“合并”时,可以显式地展示合并操作。


与“合并”操作相反,在没有任何冲突的情况下,在有分叉的 master 分支进行“变基”提交时,Git 只会假设你是在当前的 master 结点上开始处理导致该提交的分支。在这种情况下,master 分支的历史记录将不会显示创建了新分支并又将其合回 master 分支的事实。这样整个历史记录看起来是线性的。


如果功能分支想要“变基”自己将会生成一个包括子分支和合并在内的复杂拓扑,在这种情况下,后一种方法就不太适用了。为了解决这个问题,现在可以将新的–rebase-merges 选项用在“新基”上重放一组提交,并能保持“变基”分支的拓扑。此外,它还包括交互式“变基”功能,如重命名、压缩、重新排序等。从概念上讲,使用交互功能进行 rebase-merges(几乎)等同于先执行 preserve-merges,再执行 rebase -i。事实上,在 Git 2.22 中, preserve-merges 选项已弃用,取而代之的是 rebase-merges。具体的可以查看Stack Overflow.上关于 rebase-merge背后算法的深入讨论


在 Git2.22 中,对 rebase-merges 的支持并不是唯一的变化,它还包括很多其他新特性和错误修复。在此,我们重点罗列如下几条:


  • 当需要的粒度比用户允许的更大时,可以为作者和提交者的姓名和电子邮件定义新的配置变量。

  • 可以通过执行 git branch --show-current 来获取当前分支的名称。

  • 如果从一个分支中签出了一个目录,并且当前的目录树中包含了新的跟踪文件,那么在默认情况下,git 将不会关联后者,因此你最终将得到来自已签出分支和当前分支的混合文件。现在,可以通过在 git checkout 上添加–no-overlay 选项,确保可以删除跟踪文件或根据需要进行重新创建。


Git 2.22 的变更内容比本文介绍的要多得多,因此,请阅读官方发布说明来了解完整的细节。


原文链接:


Git 2.22 Adds Topology-preserving, Interactive Rebase


2019 年 7 月 21 日 08:007506
用户头像

发布了 138 篇内容, 共 56.7 次阅读, 收获喜欢 350 次。

关注

评论

发布
暂无评论
发现更多内容

使用Kotlin语言初始化数组

mengxn

数组 kotlin 初始化

关于 Windows 10 2020 年 5 月更新

FeiLong

戒掉手机吧

鼎玉谷

人生 手机 时间 浪费 控制

【5月】本月读书学到了什么

Neco.W

创业 读书感悟 阅读量

浅说Docker基础知识与核心原理

岿然独存5

go Docker 软件

Go: 使用GODEBUG改善Goroutine的使用

陈思敏捷

go golang debug 协程

N皇后问题

孙苏勇

算法 DFS 深度优先搜索

直面一个复杂世界

史方远

读书笔记 个人成长 随笔杂谈

工厂模式(四)泛型工厂之MyBatis Mapper代理

LSJ

Java 设计模式 泛型 工厂注册中心

不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...

JackTian

GitHub 学习 程序员 编码 开源项目

【摘】Git-从零单排 02期

卡尔

git 原理 开发工具 工具链

你想活出怎样的人生

Janenesome

读书笔记 思考

钢铁侠马斯克之仰望星空

池建强

创业 马斯克 Space X

RocketMQ - 高可用设计

Java收录阁

RocketMQ

Prometheus 2.18.0 新特性

耳东

Prometheus

架构之路

强哥

极客大学架构师训练营

RocketMQ - 如何实现事务消息

Java收录阁

RocketMQ

draw.io-取代visio的流程图绘制工具

Rice嵌入式开发技术分享

chrome vscode 写文章神器 draw.io

云上基础产品之虚拟私有云

韩超

公有云 VPC 虚拟私有云

ARTS Week2

丽子

程序猿邂逅相亲妹,默默无语两行泪

码农神说

程序员 相亲

云上基础产品之内容分发网络

韩超

CDN 公有云 内容分发网络

除了直接看余额,谁更有钱还能怎么比(二)

石君

去中心 零知识证明

转行程序员浅谈进程间的socket通信

WB

Linux socket 转行程序员

一款霸榜 GitHub 的开源 Linux 资源监视器!

JackTian

GitHub Linux 开源项目 bashtop 资源监视器

做PO难,难于上青天

刘华Kenneth

敏捷 产品经理 决策 PO

B端产品经理养成记(1):业务场景

涛哥

产品经理 需求 产品开发

B端产品经理养成记(2):用户故事

涛哥

产品经理 需求 产品开发

ARTS打卡第一周5.25-5.31

我笔盒呢

Linux命令-df

一周思进

工作那么久,你还具备学习能力么?

夜来妖

学习 程序员成长

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Git 2.22:保留拓扑和交互式 Rebase-InfoQ