Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
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 whizbang@{push}
\\
使用任意分支。
\\
性能
\\
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读者交流群)。
Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面相关推荐
- 在Git中,HEAD,工作树和索引之间有什么区别?
有人能告诉我在Git中HEAD,工作树和索引之间的区别吗? 据我所知,它们都是不同分支的名称. 我的假设是否正确? 编辑 我找到了这个 单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一 ...
- Git - ‘假设未改变‘和‘跳过工作树‘之间的区别
本文翻译自:Git - Difference Between 'assume-unchanged' and 'skip-worktree' I have local changes to a file ...
- VScode使用Git拉取代码到本地提示“在签出前,请清理存储工作树”
问题描述:VScode在使用Git拉取代码到本地时,弹出框提示"在签出前,请清理存储工作树",如下图所示: 解决方法: 第一步:备份当前的工作区的内容,从最近的一次提交中读取相关内 ...
- Git 2.9增加了Merge、Rebase、Commit等新特性
Git 2.9版本已于近期发布.它给merge.rebase和commit工作流带来了新的特性,以及许多其他方面的改进和缺陷修复. \\ Git merge和pull的命令将不允许两个不相关历史的分支 ...
- Git 之二 架构、工作流程、.git 目录文件
写在前面 Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网 ...
- Git在版本2.13中继续改进了安全性和UI
Git的最新版本做了很多改进,旨在改进其用户界面,同时也修复了两个重要的漏洞. \\ 众所周知,Git用于唯一识别对象的SHA-1哈希算法最近被证明容易受到碰撞攻击.虽然Git团队准备过渡到一个新的更 ...
- brew update:以下未跟踪的工作树文件将被合并覆盖:
本文翻译自:brew update: The following untracked working tree files would be overwritten by merge: I tried ...
- .gitignore和“以下未跟踪的工作树文件将被签出覆盖”
因此,我在.gitignore文件中添加了一个文件夹. 一旦我做一个git status就会告诉我 # On branch latest nothing to commit (working dire ...
- 解决vscode在拉取代码报错:在签出前,晴清理存储库工作树。
vscode git 拉取远程代码时,提示:在签出前,请清理存储库工作树 解决: 1.把当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态 git stash 2.拉取远程仓库的代码,让你现在的 ...
最新文章
- 虚拟局域网(vlan)
- 最长不下降子序列java代码_浅谈最长不下降子序列与最长上升子序列
- C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
- mysql 8.0 创建函数_MySQL 8.0 新增特性
- java 异步调用 shell_Java 实现异步调用
- java thread join()_Java中Thread.join()的使用方法
- 李楠谈小米MIX Alpha:卖19999元还是不赚钱
- secureCRT 如何上传下载文件
- hadoop集群重启
- 利用QT写的局域网聊天工具(客户端)
- 平板电脑(台电x80HD)安装Ubuntu18.04教程- Z3735系列CPU通用
- matlab 时间轴 绘图,时间轴制作超详细教程,助你轻松画出专业时间轴!
- No tests were found
- 常见TCP/IP、HTTP协议以及三次握手和四次挥手
- go语言实现简单的在线词典
- java pdf转html插件pdf2htmlex
- window下Nexus私服高级搭建
- 解决打包APK时候的报错:uses-sdk:minSdkVersion 22 cannot be smaller than version 23 declared in library
- 复选框实现。全选、全不选、多选
- tenforflow版YOLOv3下COCO格式的raccoon(浣熊)数据集的准备(未完待续)