BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Git 2.17改进了移动代码差异比较和对象搜索

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年4月23日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Git的最新版本2.17版给出了多个改进,以及一些小的新特性,包括更好的移动代码配色、在历史中查找对象等。

Git 2.17通过设定移动代码行的配色组,改进了diff命令的显示。通常情况下,Git在显示上并不区分移动代码行与其它的代码更改。现在,用户可以使用--color-moved选项,以不同的配色分别显示移动了但是并未更改的代码行,以及发生了移动也做了更改的代码行。移动代码行所用的配色,可使用diff.colorMoved选项指定。--color-moved选项支持下列配置:

  • no:不高亮显示移动代码行。
  • zebra:Git会检测包含至少20个字符(字母和数字)的代码块,并选择显示配色。一旦检测到了新的代码块,就更改为另一种颜色显示。前后两个代码块的配色分别使用color.diff.{old,new}Movedcolor.diff.{old,new}MovedAlternative选项指定。

  • dimmed_zebra:与zebra配置类似。区别之处在于,它对移动代码中不感兴趣的部分变暗显示。

  • plain: 使用color.diff.newMoved所指定的配色,在新位置显示在某处移除并添加到新位置的的代码行;使用color.diff.oldMoved指定的配色,在原位置显示移除并添加到其它位置的代码行。

在Git 2.17版中,对log和diff命令添加了新的选项--find-object。该选项可将搜索结果仅局限于指向给定对象哈希串的提交。Git对象可能会出现在多个提交中。例如,一个对象是在一次提交中首次创建的,之后可能会在另一次提交中删除。对象在重命名或拷贝时,会对应于多条路径,因此这样的对象不易被追踪。现在,使用下面的命令可以选取并显示指向给定对象的所有提交:

git log --find-object= -p

在Git 2.17版中,rebase(变基)命令和am(应用递送补丁)命令都支持新选项--show-current-patch,显示使用命令给出的差异。在rebase或merge命令因发生冲突而停止时,该选项给出的输出十分有用。此外,merge命令使用的“默认不采用Fast Forward模式”策略也稍作了修改。新版本在合并一个标签(tag)时,会应用Fast Forward模式,除非标签对象并非位于默认的“/refs/tags”目录中。对于下游(downstream)贡献者从上游(upstream)更新打标签版本上的主题分支(Topic Branch),这一改进可阻止提交无必要的合并。

Git 2.17中还包括了很多改进,本文无法一一列举。推荐查看官方发行说明

查看英文原文: Git 2.17 Improves Moved Code Diffs and Object Search

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT