Git 1.8.5 新特性

简介: 在等待下一个带来重要更新的git大版本同时,让我们先来看看最新的修正版1.8.5的特性说明。下面是我作为普通git用户从我感兴趣的发布说明文档中发掘到的信息。噢,如果你还没看过我之前的发布笔记,那就去看看吧,1.8.2、1.8.3 和1.8.4。

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

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

噢,如果你还没看过我之前的发布笔记,那就去看看吧,1.8.21.8.31.8.4


惯例升级建议

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

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

HEAD 的新别名终于可以使用

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


一些rebase改进

Rebase有如下改进:

* 在–interactive rebase的操作中,提交的id会遵照core.abbrev的长度(core.abbrev是保存提交的哈希的缩写长度的配置项,默认为7)。

* 你现在可以通过修改配置pull.rebase到preserve,来定制git pull –rebase是否使用默认情况下变平还是保留合并。对这一点的细节和rebase –preserve-merges的作用,请参考Stack Overflow的答案。


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,如果任一文件匹配了其他选项,就选择了所有路径。如果没有文件匹配其他选项,什么都不做。

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 系统自作聪明地把 "--"替换成"-"所至。


相关文章
|
网络安全 开发工具 git
GIt-远程仓库(特性)
GIt-远程仓库(特性)
120 0
|
Linux 开发工具 git
【Git】3. Git重要特性-分支操作,合并冲突详解
【Git】3. Git重要特性-分支操作,合并冲突详解
【Git】3. Git重要特性-分支操作,合并冲突详解
|
2月前
|
存储 开发工具 git
|
2月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
58 0
|
11天前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
14天前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7
|
13天前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
15天前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
本文介绍 Git 的核心概念,如仓库、提交、分支与合并,并提供了常用命令,如初始化仓库 (`git init`)、提交更改 (`git commit -m "Commit message"`)、拉取 (`git pull`) 和推送 (`git push`) 等。此外,还分享了高级技巧,如撤销提交 (`git revert <commit>`)、交互式暂存 (`git add -i`) 和使用别名简化命令 (`git config --global alias.ci commit`) 等,帮助开发者提升效率。无论是初学者还是资深开发者,都能从中受益。
|
22天前
|
开发工具 git 开发者
GIT命令的综合总结
Git的学习曲线可能比较陡峭,但熟练掌握这些命令后,你将能够更加高效地管理和协作你的项目。希望这份指南能帮助你成为Git的高效用户。
43 7