git 近期发布了其最新的2.6 版本,增加了许多新的特性,对许多内部结构和性能方面进行了改进,以及修复了大量的Bug。
新的工作流与UI 特性
Git2.6 引入了新的特性,即命令git fsck
,此命令可在项目的历史记录中解决一些小的错误。git fsck
用于验证仓库的完整性。经常遇到的情况时,当git fsck
会对过去的提交过于吹毛求疵时,标记为不当的形式,以及不值当的历史记录修改等,例如,当很多用户已经克隆了仓库时。在此情况下,Git 2.6 允许开发者通过指定git fsck
来调整严重性,例如,命令git config fsck.badEmail ignore
会忽略不合法的电子邮箱地址。
git fsck
也可以用于自动地检查对象的完整性,这些对象是指已经 push 到仓库的对象,从而防止旧的对象进入到项目的历史。在此情况下,这对告诉git fsck
简单的忽略处于不好状态的提交蛮有用处,同时还能保持对新 push 的对象作全面的检查。这可以通过git config: git config fsck.skiplist "$PWD/.git/skiplist"
所提供的可忽略的提交列表来完成 。
当执行一次 rebase 期间,命令git status
能够显示更加详细的内容,它会提供关于在 rebase 日志中最后步骤和接下来的步骤的细节。这在大批量的提交后,再 rebase 时可以很好的跟踪一些记录。
以下是其它一些较有用的新特性:
git log --date
允许开发者使用自定义的日期格式:git config log.date "format:%c"
;git log --cc
现在实现了-p
的功能,所以它实际上显示合并提交的不同;git fast-import
支持一个新的get-mark
属性,使得 SHA-1 所对应的文件描述符被标记为可打印;git log
支持一个新的配置项:--follow
,继续列出经过重命名的文件的历史;git pull --rebase
现在会考虑用户的rebase.autostash
配置,此配置项默认会启用--autostash
属性,从而让用户可以 rebase 一个脏的 worktree。
性能与内部实现改进
在前端交互方面,用 C 重写了一些命令,例如git pull
和git am
。另外,对commit
和status
在 multi-tree 合并后进行了加速。还有,对 Git 的一些内部实现作了一些变更,为的是准备好让不同的ref
后端能够插入到 Git。
根据 Git 邮件列表的通告 ,Git2.6 包含了从Git2.5 以来479 次未合并的提交。关于新特性的完整列表,以及所修复的Bug,请阅读其发行注记。
查看英文原文: Git 2.6 Brings Many New Features and Improvements
感谢张龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论