Git 1.8.5 新特性

在等待下一个带来重要更新的git大版本同时,让咱们先来看看最新的修正版1.8.5的特性说明。git

下面是我做为普通git用户从我感兴趣的发布说明文档中发掘到的信息。github

噢,若是你还没看过我以前的发布笔记,那就去看看吧,1.8.21.8.31.8.4web

惯例升级建议

按惯例,我会提供一些升级的建议,包括警告和提醒(大部分时候,这些建议官方会发布的比较慢,咱们也控制不了)。下面是一份升级指导:ubuntu

  • 若是你在OSX上使用homebrew,执行brew update && brew upgrade git。
  • 若是是基于Ubuntu的发行版,使用智能的apt trick(其他的发行版留待读者联系J)。
  • 在windows上,仅仅执行新的 installer就能够了(Windows发布一般会拖慢一些,因此若是你如今没发现,请耐心等待。)。

HEAD 的新别名终于可使用

这个特性开发了一段时间,最终能够了:HEAD有了一个新的别名,@。如git log @.segmentfault

一些rebase改进

Rebase有以下改进:
* 在–interactive rebase的操做中,提交的id会遵守core.abbrev的长度(core.abbrev是保存提交的哈希的缩写长度的配置项,默认为7)。
* 你如今能够经过修改配置pull.rebase到preserve,来定制git pull –rebase是否使用默认状况下变平仍是保留合并。对这一点的细节和rebase –preserve-merges的做用,请参考Stack Overflow的答案。windows

status小改进

此次发布中包含了很多git status的改进:
* 再也不打印$name.ignore设置为all的子模块的变化信息。
* 在cherry-pick中显示当前被选中的提交。
* 输出中再也不包含以#开头的行。若是你用脚本解析git status的输出,如今须要更新为git status –porcelain。
* git status 和 git branch -v -v 如今区别不依赖任何其余分支的分支,和依赖的分支同步的分支,以及依赖一些已经不存在分支的分支。后端

Diff 支持全部非指定类型(all-but)

git diff –diff-filter已经能够过滤几种不一样的变化:浏览器

–diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
只选择哪些添加 (A), 赋值 (C), 删除 (D), 修改 (M), 重命名 (R)的文件, 它们的类型(如 普通文件, 符号连接, 子模块, …) 是否改变 (T), 是否未合并 (U), 是未知 (X), 或它们的对崩溃(B). 任何过滤字符的组合(包括none)都可使用。当组合中包括All或none,若是任一文件匹配了其余选项,就选择了全部路径。若是没有文件匹配其余选项,什么都不作。cookie

Diff如今支持接受小写字母参数,含义为展现全部非指定类型的变化。性能

HTTP变量区分站点

http.*变量如今能够指定URL。以下例子会在和指定的站点交互时关闭http.sslVerify。

[http]
    sslVerify = true
[http "https://weak.example.com/"]
    sslVerify = false

在move时引入子模块感知

在每一个发布版本中,子模块的支持一直在持续改进。此次git支持了子模块的从新定位。

‘git mv A B’在移动子模块A时,git支持从新定位其工做数,调整其路径以匹配.gitmodules文件。

性能,内部实现等

  • HTTP传输层在可能的状况下尝试使用TCP keepalive。
  • git repack如今采用c编写。

其余信息

下面是直接从发布说明中摘出来的点:
* git whatchanged不建议使用,但没有去除。其在文档大部分篇幅中重要性下降。
* git cherry-pick 如今支持git cherry-pick – 以从前一个分支获取。
* xdg-open能够用做 git web-browse的浏览器后端,进而丰富了git help –w的输出。
* 和make –C同样,git –C…使Git在执行任何操做以前先切换到那个路径。
* 使foo^{tag}去除自身的一个tag,也就是空操做,并在foo不是一个tag时失败。git rev-parse –verify v1.0^{tag}会简化以下操做test $(git cat-file -t v1.0) = tag。
* git push –no-thin 实际上禁止了“thin pack transfer”优化。
* 智能路径规范能够在更多的地方使用。如“:(icase)makefile”匹配Makefile和makefile;“:(glob)foo/**/bar”匹配bar,foo以及任意foo的子文件夹。
* Git blame如今能够接受不止一个-L选项来获取原版本中多行信息。
* http客户端可使用http.savecookies配置变量请求保存cookies。
* Git fetch(git pull同样)会检查fetch.prune和remote.*.prune配置变量。其行为和加上-prune命令行参数同样。


原文连接: atlassian , 转载自: 伯乐在线 - Codefor

备注:经 Segmentfault 编辑升级 Git 后试验测试,文章中,使用 git 带上参数时,大多格式如 "–interactive rebase"的应该"--interactive rebase",这里的"-"应为"--", 多是做者的 blog 系统自做聪明地把 "--"替换成"-"所至。

相关文章
相关标签/搜索