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增加了工作树、改进了三角工作流、性能等诸多方面相关推荐

  1. 在Git中,HEAD,工作树和索引之间有什么区别?

    有人能告诉我在Git中HEAD,工作树和索引之间的区别吗? 据我所知,它们都是不同分支的名称. 我的假设是否正确? 编辑 我找到了这个 单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一 ...

  2. Git - ‘假设未改变‘和‘跳过工作树‘之间的区别

    本文翻译自:Git - Difference Between 'assume-unchanged' and 'skip-worktree' I have local changes to a file ...

  3. VScode使用Git拉取代码到本地提示“在签出前,请清理存储工作树”

    问题描述:VScode在使用Git拉取代码到本地时,弹出框提示"在签出前,请清理存储工作树",如下图所示: 解决方法: 第一步:备份当前的工作区的内容,从最近的一次提交中读取相关内 ...

  4. Git 2.9增加了Merge、Rebase、Commit等新特性

    Git 2.9版本已于近期发布.它给merge.rebase和commit工作流带来了新的特性,以及许多其他方面的改进和缺陷修复. \\ Git merge和pull的命令将不允许两个不相关历史的分支 ...

  5. Git 之二 架构、工作流程、.git 目录文件

    写在前面   Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网 ...

  6. Git在版本2.13中继续改进了安全性和UI

    Git的最新版本做了很多改进,旨在改进其用户界面,同时也修复了两个重要的漏洞. \\ 众所周知,Git用于唯一识别对象的SHA-1哈希算法最近被证明容易受到碰撞攻击.虽然Git团队准备过渡到一个新的更 ...

  7. brew update:以下未跟踪的工作树文件将被合并覆盖:

    本文翻译自:brew update: The following untracked working tree files would be overwritten by merge: I tried ...

  8. .gitignore和“以下未跟踪的工作树文件将被签出覆盖”

    因此,我在.gitignore文件中添加了一个文件夹. 一旦我做一个git status就会告诉我 # On branch latest nothing to commit (working dire ...

  9. 解决vscode在拉取代码报错:在签出前,晴清理存储库工作树。

    vscode git 拉取远程代码时,提示:在签出前,请清理存储库工作树 解决: 1.把当前未提交的修改暂存起来,让仓库还原到最后一次提交的状态 git stash 2.拉取远程仓库的代码,让你现在的 ...

最新文章

  1. 虚拟局域网(vlan)
  2. 最长不下降子序列java代码_浅谈最长不下降子序列与最长上升子序列
  3. C++ leetcode 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
  4. mysql 8.0 创建函数_MySQL 8.0 新增特性
  5. java 异步调用 shell_Java 实现异步调用
  6. java thread join()_Java中Thread.join()的使用方法
  7. 李楠谈小米MIX Alpha:卖19999元还是不赚钱
  8. secureCRT 如何上传下载文件
  9. hadoop集群重启
  10. 利用QT写的局域网聊天工具(客户端)
  11. 平板电脑(台电x80HD)安装Ubuntu18.04教程- Z3735系列CPU通用
  12. matlab 时间轴 绘图,时间轴制作超详细教程,助你轻松画出专业时间轴!
  13. No tests were found
  14. 常见TCP/IP、HTTP协议以及三次握手和四次挥手
  15. go语言实现简单的在线词典
  16. java pdf转html插件pdf2htmlex
  17. window下Nexus私服高级搭建
  18. 解决打包APK时候的报错:uses-sdk:minSdkVersion 22 cannot be smaller than version 23 declared in library
  19. 复选框实现。全选、全不选、多选
  20. tenforflow版YOLOv3下COCO格式的raccoon(浣熊)数据集的准备(未完待续)

热门文章

  1. python简介怎么写-python中如何写类
  2. python拼音怎么写-Python 中拼音库 PyPinyin 的用法
  3. 题目1103:二次方程计算器
  4. msql查询指定日期
  5. 手动写个类似的Spring MVC框架试试
  6. Python基础-socket编程
  7. 搞定vim的窗口操作
  8. Python系统命令操作
  9. WebService大讲堂之Axis2(4):二进制文件传输
  10. linux修改文件权限属性,如何修改Linux文件的属性与权限