QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Git 2.5 增加了工作树、改进了三角工作流、性能等诸多方面

  • 2015-08-15
  • 本文字数:1078 字

    阅读完需:约 4 分钟

Git2.5 是一个重要的功能版本,其中包括了worktrees、改进过的triangular workflows、更好的性能,以及无数的改进和修复。

工作树(Worktrees)

工作树是一个新的实验性功能,使开发者可以在同一Git 仓库中,创建额外的工作树(working trees)。这一功能旨在让开发者易于在两个分支上同时工作。在老的Git 版本中,为此只能切换分支,因为同一时间只能使用一个分支;或者创建一份本地的副本,但为了保持它们的一致性,通常需要额外的工作。

Git 提供了 worktree 命令,用于创建一个新的工作树:

$ git worktree add -b hotfix ../hotfix origin/master这将在指定的路径下(比如…/hotfix),创建一个新的目录,从 origin/master 产生一个新的分支,并将代码迁出到这个新目录中。

在某些场景中,使用第二个工作树会非常有用。比如, 运行当前版本的一个长时间的测试,同时工作在下一个版本的分支上;或者处理一个紧急修复而无需切换出当前分支。

工作树会与主干仓库链接起来,并且彼此互相感知。所以,不允许将同一分支迁出到两个不同的工作树中,以避免两个工作树无法同步。

三角工作流(Triangular workflows)

三角工作流通常用于协调团队的代码贡献者之间的工作。其基本思想是,贡献者拥有他们自己的 fork,当准备好共享时,他们要创建一个 pull 请求,该请求最终会被合并到主干仓库。

为了使三角工作流易于处理,Git2.5 增加了新的符号 @{push},表示当前分支要推送到远程跟踪分支,所处的当前值。这将被用于,比如,列出自上次推送以来,当前分支已经增加的全部提交:

$ git log @{push}或者,可以这样:

$ git log <a href="mailto:whizbang@%7Bpush">whizbang@{push</a>}使用任意分支。

性能

Git2.5 改进了大工作树和网络文件系统的性能:

  • git update-index --untracked-cache 将启用一个实验性功能,使 Git 只检查目录的修改时间,以提高git status的性能。
  • git index-pack 会减少对 packed-refs 目录的扫描次数,以提高网络文件系统的性能。
  • 使用网络文件系统,重用现有包对象,可以减少对utime的频繁调用。

除了以上介绍的功能,Git2.5 还改进了对 Perforce 仓库的支持,包括使用 git p4 检测文件类型、更好地处理分支,以及更多的改进和修复,可以在发版说明中了解这些。

查看英文原文: Git 2.5 Adds Worktrees, Improves Triangular Workflows, Performance, and More


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-15 18:393742

评论

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

kubernetes fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

Spider实战-抓取视频

浅辄

三周年连更

从ReentrantLock角度解析AQS

Java AQS 并发

vivo全球商城:电商交易平台设计

vivo互联网技术

分布式事务 订单管理 架构设计 多租户 交易平台

Vue.js 数据双向绑定的实现

格斗家不爱在外太空沉思

Vue ES6 三周年连更

不要过于吹捧ChatGPT:人工智能生成文字还有很大提升空间

石头IT视角

程序员如何保住自己的饭碗?| 社区征文

liuzhen007

程序员 三周年征文

专注写作:Ulysses for Mac中文版

真大的脸盆

Mac markdown编辑器 Mac 软件 文本编辑 文本管理工具

Java开发人员必知的常用类库,这些你都知道吗?

会踢球的程序源

#java

AI日课@20230412:Prompt Engineering

无人之路

ChatGPT

Java数组、排序和查找

timerring

Java

一定是疯了!在M1的Mac上玩OpenVINO,让Intel怎么看我?

IT蜗壳-Tango

OpenVINO Stable Diffusion 三周年连更

Java程序控制结构

timerring

Java

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

陈言必行

Unity 三周年连更

成都.NET线下技术沙龙倒计时一天

MASA技术团队

.net 开发者 MASA Stack

RabbitMQ组件介绍

穿过生命散发芬芳

RabbitMQ 三周年连更

kubernetes delta_fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

跨平台应用开发进阶(四十三)一文走近网络层抓包工具:WhireShark

No Silver Bullet

网络层 抓包工具 三周年连更

安全沙箱技术的原理、应用程序的安全性和稳定性

没有用户名丶

平安证券与易观千帆达成合作,拓宽用户服务新路径

易观分析

金融 证券 经济

有史以来最完整包SpringBoot学习笔记整合,该有的应有尽有

会踢球的程序源

Java 后端 Spring Boot CLI

ContentProvider介绍

芯动大师

ContextClassLoader 三周年连更

数据库原理及MySQL应用 | 约束

TiAmo

数据库 MySQL数据库 三周年连更 数据库约束

Go语言开发小技巧&易错点100例(三)

闫同学

Go 三周年连更

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

Fire_Shield

C语言 汇编 三周年连更 函数栈帧

【Linux】之【磁盘】相关的命令及解析[df、du、iostat、iotop]

A-刘晨阳

Linux 三周年连更 磁盘空间

openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包

GreatSQL

如何使用 taosKeeper 做好监控工作,时序数据库 TDengine 3.0 监控工具详解

TDengine

大数据 tdengine 物联网 时序数据库 数据监控

2023最新版Java面试八股文大全PDF版限时分享,含700道高频面试题

会踢球的程序源

Java 架构 java面试 Java工程师 八股文

kubernetes indexer源码解析

欢乐的阿苏

golang DevOps cache 源码阅读 #Kubernetes#

Golang并发编程实战:使用ring buffer实现高效的阻塞队列

Jack

Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面_DevOps & 平台工程_Sergio De Simone_InfoQ精选文章