写点什么

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

2016 年 6 月 21 日

Git 2.9 版本已于近期发布。它给merge、rebase 和commit 工作流带来了新的特性,以及许多其他方面的改进和缺陷修复。

Git merge 和 pull 的命令将不允许两个不相关历史的分支进行合并,除非指定–allow-unrelated-histories 选项。当两个分支的根提交不一样时,它们会有不相关的历史,比如,当两个分支用于完全不同的目的(如代码和文档)时。在这种情况下,git 不悄悄地合并无关历史是可取的,因为这可能会产生意想不到的后果。在一些“特殊”的情况下可能合并无关的历史是必要的,那么可以采用上面提到的–allow-unrelated-histories 选项来强制执行这种行为。

rebase 命令现在支持在非交互模式下使用 -x 选项。-x(- exec) 选项可以用来在每一个 rebase 的步骤中运行一个给定的命令。例如,可以用来运行单元测试,从而检查每个 rebase 提交不会破坏任何东西。以前,这可能仅仅通过传递 -i 选项来完成。同时,也修复了一个使用 git rebase -m 命令来 rebase 一个从根提交开始的分支的缺陷,原来的问题在于它假设了父提交的存在。

commit 命令支持一个新的 commit.verbose 配置选项,这个选项用来指定默认情况下是否为 verbose。设置这个选项和每次在命令行给定–verbose 选项是一样的,它将显示变化之间的内联 diff。此外,git commit --dry-run 过去曾经有个问题,即它提示说不能进行提交而 git commit 命令实际上允许提交。在新的版本中它将提供正确的结果。最后,还修复了当把空消息传递给 -m 选项时导致 git commit 行为出错的缺陷。

git clone 命令增加了一个新的–allow-submodules 选项,它使得克隆一个代码库成为可能,然后可以无须获取整个历史即可克隆它的所有子模块,从而加快克隆的速度和效率。

Git 2.9 还改进了使用 hooks 的便利性。它允许接入 Git 任务(例如 commit、merge、rebase 和 push 等等),然后可以定义在这些任务之前或之后运行的脚本。事实上,一个新的 core.hooksPath 配置选项允许指定你的 hooks 所在的目录:

git config core.hooksPath /etc/git/hooks

以前,git 会在.git/hooks 目录寻找 hooks。

Git 2.9 中还包含了其他的一些改进,如更好的检测文件重命名、更好的处理 git 日志中的选项卡、和更丰富的 git 描述(包含算法)。然而,这次 Git 2.9 的改进和错误修正的列表还很长,在这里不一一列出了。你可以在发布说明中找到更多的内容。

查看英文原文 Git 2.9 Adds New Features to Merge, Rebase, Commit, and More


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 6 月 21 日 19:001502

评论

发布
暂无评论
发现更多内容

共享服务中心建设原则-《企业IT架构转型之道-阿里巴巴中台战略思想与架构实战》

Man

中台 研发管理 DDD

演化过程中的技术与业务双驱引擎

boshi

云计算 架构 中台 成长 数字化

甲方日常 26

句子

生活 随笔杂谈 日常

极客时间架构 1 期:第 3 周代码重构 - 学习总结

Null

如何高质量学习与正确运用设计模式

木香丘

学习 设计模式 实战

时空停滞

Sean

调试 心得

Serverless 多云解决方案 Malagu

木香丘

云计算 Serverless 架构 云原生 Malagu

架构师训练营第三小结(9.28-10.4)

zjzj2017

架构师训练营第四周学习总结

尹斌

技术人为什么该坚持写作?

极客思享

java安全编码指南之:方法编写指南

程序那些事

java安全编码 java安全 java安全编码指南

第四周作业

极客大学架构师训练营

week03总结

xxx

基于 Spring Boot 的企业级快速开发框架 BDF3

木香丘

架构 Spring Boot 可视化 后台管理系统

架构师1期-代码重构作业

ltl3884

极客大学架构师训练营

架构师训练营第三周作业(9.28-10.4)

zjzj2017

spring-boot-route(八)整合mybatis操作数据库

Java旅途

Java Spring Boot mybatis

菜鸟工程师的超神之路 -- 从校园到职场

极客思享

深入剖析go中字符串的编码问题——特殊字符的string怎么转byte?

新世界杂货铺

go golang 后端 string utf-8

架构师训练营第四周作业

尹斌

Hazelcast IMDG 带你瞬间进入内存计算的时代

张磊

分布式计算 内存管理 分布式缓存 分布式内存网格

spring-boot-route(九)整合JPA操作数据库

Java旅途

Java Spring Boot jpa

那个百无一用的技术主管

极客思享

算法岗有没有泡沫

极客思享

Malagu 框架介绍

木香丘

云计算 开源 Serverless 架构 框架

LeetCode题解:226. 翻转二叉树,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Python 为什么不支持 switch 语句?

Python猫

Python 编程

发几张国庆的照片

亨利笔记

容器 k8s Harbor 镜像

week03作业

xxx

使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)

mzlogin

jsDelivr CDN Jekyll GitHub Pages 个人博客

缓存服务-技术专题-解决方案

李浩宇/Alex

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Git 2.9增加了Merge、Rebase、Commit等新特性-InfoQ