Git在版本2.13中继续改进了安全性和UI

Git的最新版本做了很多改进,旨在改进其用户界面,同时也修复了两个重要的漏洞。
众所周知,Git用于唯一识别对象的SHA-1哈希算法最近被证明容易受到碰撞攻击。虽然Git团队准备过渡到一个新的更安全的散列算法,但它们已经实现了一种算法,这种算法可以检测和拒绝任何创建时带有制造冲突目的的对象。这应该会有效地减轻被攻击的风险。

在安全性方面,Git 2.13版本还修复了一个漏洞,这个漏洞会影响到所有使用git shell的Git托管服务器,它使攻击者可以在远程服务器上静默运行shell命令。而该版本提供了一种更严格的方式,通过SSH来使用Git的push/pull命令和安装在git-shell-commands目录中的自定义命令。

同时,Git 2.13版本在UI方面也做了很多改进。尤其对于为不同项目工作的所有开发人员来说,最有用的功能是通过条件配置来处理多个身份的能力。简而言之,条件配置提供了一种基于一组条件来包含Git配置文件的方法。例如,您可以在 / .gitconfig文件中使用以下指令,以根据存储库所在目录的路径自定义Git配置:

[includeIf "gitdir:~/work/"] path = .gitconfig-work[includeIf "gitdir:~/play/"] path = .gitconfig-play
具体来说,这可以用来在.gitconfig-work和.gitconfig-play中定义不同的用户和电子邮件。

在Git 2.13版本中,几乎所有开发人员都会使用到的功能是在Git命令中使用路径规则,即pathspecs。 例如,如果要在存储库中对给定类型的所有文件执行grep,可以写:

git grep my_pattern '*.c'
现在,您还可以使用否定pathspecs(从命令中排除特定的pathspec)以及使用属性的pathspec(在pathspec定义中包括这些属性)。 例如:

git grep text_to_search -- src ':(exclude)*.c'
其他显著地改进包括:

git branch、git tag和git for-each-ref现在支持的--no-contains选项,可用于选择不包含指定提交的标签或分支,例如:

git tag -l --no-contains cf5c725 'v[0-9]*' | sort | tail -n 10

已有--contains选项时--no-contains选项会被忽略,例如查找在两个标签之间创建的分支:

git branch --contains v2.8.0 --no-contains v2.10.0

git stash支持使用pathspecs来暂存当前正在进行的工作,从而允许更多地控制要被暂存的内容。

子模块现在有自己独立的命令,包括checkout、grep和ls-files。 这意味着子模块支持递归遍历。 另外,git status --short可以查询出有关子模块的更多状态信息。
您可以阅读完整的发版说明,详细了解Git 2.13版本中的新功能。

本文转自d1net(转载)

时间: 2024-10-22 02:50:33

Git在版本2.13中继续改进了安全性和UI的相关文章

Git for Windows 2.13.1(2) 发布,分布式版本控制系统

Git for Windows 2.13.1(2) 已发布,这是一个针对 2.13.1 的补充版本: git commit 和 git status 不再随机抛出分段错误. 详情和下载地址可查看发行主页 Git for Windows 2.13.1 带来了许多新特性: 集成 Git v2.13.1. 集成 Git Credential Manager v1.10.0. 集成 OpenSSH 7.5p1. 集成 Git Flow v1.11.0. 集成 Git LFS v2.1.1. Git 现在

git pull——git库版本与本地库版本冲突总结

git库版本与本地库版本冲突:个人定义为就是git库版本与本地库版本不匹配,详细地说就是我们从git库clone克隆下来的版本,经过修改后提交并合并成新版本,但是后来又将git库的该版本撤销了,而本地没有撤销该版本,此时就是本地库拥有此版本而git库中没有此版本.这样在使用git pull或git pull origin master可能会出现:"Your local changes to the following files would be overwritten by merge&quo

手把手教你玩转Git分布式版本控制系统!

目录  Git诞生历史  Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具   1  Git诞生历史   我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux技术爱好者的贡献,志愿者们通过邮件向Linus发送着自己编写的源代码文件,然后由Linus本人通过

在低版本的vc中使用vc 10.0的新特性

/*! 在低版本的vc中使用vc 10.0的新特性 created by : andrew.wu (erpingwu@gmail.com) */ vc 10.0提供了一些新的特性,最引人注目的莫过于lambda, 但vs2010 beta内存占用之多也不得不让人心生退让. 高手 7cat 指出 "vc ide 只是一个壳" 那么如果利用 vc 10.0 编译器的新功能? 以vc9为例, 注意 Tools->Projects and Solutions->VC++ Direc

ie9-【Raphael】在IE9及以上版本的IE中对于path的拖动表现不正常

问题描述 [Raphael]在IE9及以上版本的IE中对于path的拖动表现不正常 像下面这样改变path的attr来使其实现拖动效果,在FF,CHROM,IE8都正常,但是IE8以上的版本就不行,F12中可以看到该path的坐标属性值在变化,可是画面上的线纹丝不动...谁知道是为什么... path.attr({ "path": Raphael.fullfill("M{x1},{y1}L{x2},{y2}", { x1: p[0].x, y1: p[0].y, x

Ubuntu的衍生版本UbuntuKylin 13.10正式版发布前夕

10月17日消息,在Ubuntu的衍生版本UbuntuKylin 13.10正式版发布前夕,Canonical公司与CCN开源创新联合实验室.国防科技大学联合召开媒体发布会,针对UbuntuKylin 13.10的新特性做了说明及演示. Canonical中国区经理于立强介绍,UbuntuKylin 13.10版本在本地化方式做了更多的优化.新版本可以直接搜索中文在线内容.同时引入了更多的第三方本地化软件.通过与国际厂商的合作,目前已经有越来越多的游戏可以在Ubuntu系统下运行. Ubuntu

intllij idea servlet-intellij idea 13中web工程写了一个servlet

问题描述 intellij idea 13中web工程写了一个servlet intellij idea 13中web工程写了一个servlet 里面写了一个输出语句 启动服务器为什么ie页面显示的是index.jsp内容而不是servlet内容. servlet写在YY.CLASS这个类里面 import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.Servl

poi输出的excel在高版本的office中打开保存为xlsx后缀后文件的图片内容无法显示

问题描述 poi输出的excel在高版本的office中打开保存为xlsx后缀后文件的图片内容无法显示 目前系统遇到一个bug,打印出来的excel文档后缀为.xls,其中含有一张图片! 在2003/wps等可以正常打开该文件,并且显示图片内容 但如果将打印出来的xls文件通过2010/2013等office软件打开后,如果保存为xlsx后缀的excel,则图片内容会丢失. 这个系统用的poi的jar包是3.8版本的!有无朋友也遇到过类似的excel文档问题,一起来讨论下!

git学习------>如何修改git已提交的记录中的Author和Email?

一.背景 最近搭建好GitLab后,准备陆陆续续的将之前在SVN仓库中保存的代码迁移到GitLab上,昨天顺利将三个Android组件的代码迁移到GitLab后,其他同事发现迁移是成功了,但是pull下来命令后查看git log 发现所有人的有些都配置成了我的邮箱,尴尬啊. GitLab上面全部变成了我的提交记录,尴尬. 二.原因分析 下面具体分析下为什么产生这个的原因. 具体原因是因为再做SVN–>Git迁移准备的时候,第一步要建议SVN用户到Git用户的映射文件.而这个映射文件最终我将所有用