快捷搜索:

您的位置:澳门新葡4473网站 > 项目 > Git 2.24 发布,分布式版本控制系统

Git 2.24 发布,分布式版本控制系统

发布时间:2020-03-01 21:52编辑:项目浏览(196)

    图片 1

    章节目录

    Git 2.24 已经发布,该版本包含了来自 78 个贡献者的功能增加和 bug 修复。其中带来一些亮点,比如特性宏,commit-graph,新可选全新的仓库历史重写工具 filter-repo 等,内容如下:

    前言

    Feature macros

    在 Git 2.24 中,可以选择使用 feature 宏功能(一种包含许多其他功能的 Git 配置)。这些是由 Git 的开发人员手动选择的,通过它可以选择加入某个功能或根据存储库的特性采用一些设置。例如,假设有一个特别大的存储库,当我们发现其运行缓慢时,通常会将 index.version 设置为 4,但这并不是好的解决方法。而现在有另外一种选择:通过下面方式启用 feature.manyFiles:

    git config feature.manyFiles true
    

    目前 feature 宏功能只包括 feature.experimenta l和 feature.manyFiles,以后可能会新添加新的宏。

    1. 基础篇:

    Commit graphs by default(默认启用提交图)

    在 Git 2.24 中,默认会启用提交图,此前该功能是在实验性 core.commitGraph 配置启用,但经过大量测试,已经可以默认启用。除了之外,还有一些提交图其他的改进:

    • 所有 commit-graph 子命令(例如 git commit-graph write,git commit-graph verify 等)都支持 -[no-] progress。
    • 引入了一个新的配置值,用于在获取时自动更新 commit-graph 文件,该配置值利用提交图链将部分历史记录写入提交图链中,以供以后压缩。
    • 修复了许多错误,以改善 commit-graph 命令的性能和可靠性,尤其是在面对损坏的存储库时。
    • commit-graph 命令现在还支持Git的最新跟踪机制 trace2
    • 为什么要使用版本控制系统
    • Git 分布式版本控制系统的优势
    • Git 安装和设置
    • 了解Git存储库(Repo)
    • 起步 1 – 创建分支和保存代码
    • 起步 2 – 了解Git历史记录
    • 起步 3 – 拉取请求 Pull Request 工作机制

    Alternative history rewriting tools

    如果想对存储库的历史记录执行复杂的操作(例如从存储库的历史记录中删除文件或提取与一个目录有关的历史记录),可以试用 git filter-branch。 git filter-branch 是一个历史悠久的且功能强大的重写历史记录的工具。

    但是,git filter-branch 使用非常复杂,而且操作特别慢,并且经常会导致很多意想不到的误操作导致仓库库损坏和数据丢失。

    Git 2.24 中推荐 git filter-repo(github/newren/git-filter-repo)。git filter-repo 可以避免用户在使用 git filter-branch 遇到的很多坑。git filter-repo 无需按顺序重新处理每个提交,而是对历史记录进行高效的流表示,可以更高效地运作。该工具功能极其强大,其所有功能都具有详细的文档。下面是有关如何使用 git filter-repo 的一些特点:

    • git filter-repo --analyze 提供了易于理解的度量选择,用于分析存储库的大小。这包括每种对象有多少个,文件和目录最大,扩展名占用最多空间等等
    • 可以使用 --path-{glob,regex} 和类似的选项来过滤存储库的历史记录,使其仅包含某些路径
    • 重写历史记录时,所有重写的提交(连同其祖先)将获得一个新的 SHA-1 来识别它们。默认情况下,git filter-repo 会更新对这些 SHA-1 的所有其他引用,就像其他引用它们的提交消息一样
    • 可以对历史记录执行"查找和替换"操作
    • git filter-repo 是可扩展的,它提供了一个灵活的接口,用于在 Python 中指定回调以及定义新的子命令

     更多详情请见发布说明。

    参考:

    Git 存储库看上去就是一个文件夹,只是在这个文件夹中不仅仅保存了所有文件的当前版本,也同时保存了所有的历史记录,这些额外的信息都保存在当前文件夹下面的.git子目录中。因为前面我们所描述的git跟踪改动的特殊方式 ,git可以在很小的开销下保留非常复杂的历史记录,同时也由于这种跟踪方式,使得git可以通过改变链接指向的方式随时切换当前目录中任何文件的版本,从而实现了在同一套文件系统上切换分支的功能。

    虽然git是分布式版本控制系统(DVCS),但是在企业开发中,我们仍然需要一个中心git存储库以便不同的团队成员可以更为方便的交换代码。与集中式(CVCS)的中心存储库不同,Git的中心存储库与任何开发人员的本地存储库都保留了一致的代码变更,因此开发人员不必连接到中心存储库就可以完成获取历史记录,拉取分支,合并分支等操作;这给予了每一名开发人员离线工作的能力,同时允许每个人在本地创建自己的分支结构进行尝试,在开发人员认为本地的分支需要共享给其他人的时候,他们可以将本地分支推送至中心存储库,这样其他开发人员也可以获取这些共享的更改。所以,在企业中使用Git并配合中心存储库可以兼顾团队开发中共享和独立开发的诉求,让开发人员具备很高的自由度的同时又不会丧失代码集中存储所带来的优势。

    图片 2

    当然,开发人员也可以不通过中心存储库共享代码,但是这种做法在企业中是不推荐的,虽然在GitHub上这基本上是普遍的工作方式,但是这种工作方式并不适合与企业开发。与开源软件不同的是,大多数企业开发都是多人协作完成同一个项目,而开源代码的开发则更需要每个人具备独立的版本根据自己的需要进行定制。

    Git存储库的基本结构

    图片 3

    注:在任何的操作系统中,使用.开头的目录都会被默认隐藏掉,所以要看这些文件需要打开隐藏文件显示和扩展名显示才能看到上面的视图。

    .git目录

    git的数据目录,里面保存了git自己管理的数据文件,用于实现git的各种功能;删除这个文件等同于删除所有git历史记录,而你的目录就变成了一个普通的文件目录。

    .gitattributes文件

    用来对当前目录中的git的一些行为进行配置的文件,它能够做到很多事情,比如:指定哪些文件是二进制的以便git不会对它们进行文本比较,指定使用metadata的方式对图片文件进行比较,指定分支间特定文件的合并策略(比如保持master为固定版本,忽略任何合并进来的版本),或者在暂存文件的时候调用某些脚本执行一些动作,等等。

    详细说明:

    .gitignore 文件

    这是一个非常重要的配置文件,用来指定哪些文件应该被忽略掉。因为我们在开发中经常会创建很多临时文件,比如:编译过程的中间文件和最终产生的二进制,这些都不应该被提交到git仓库中。因此我们需要根据不同的技术栈来配置这个文件以便可以正确的忽略那些不应该提交的文件类型。

    好在github上已经收集了基本所有你会用到的gitignore文件,只要根据你所使用的技术栈选择并放入存储库即可:

    Git的三级配置系统

    以上我们在某个git仓库中看到的.gitignore和.gitattributes都属于Git的三级配置系统的一部分,用于对当前仓库进行配置,另外两个级别分别是 global 和 system。 他们的结构如下

    • system
      • global
        • repo 1
        • repo 2

    系统级

    system 为系统级配置文件,在Windows上存放于Git的安装目录下(默认位置为C:Program FilesGitmingw64etcgitconfig)。如果要直接对这个配置进行编辑可以使用以下命令

    git config --edit --system
    

    图片 4

    注:编辑系统级配置的命令行窗口需要提升权限运行,否则无法保存。

    用户级别

    global 为当前用户的全局配置文件,在Windows上存放于当前用户的根目录(默认为 C:Users{你的用户名.gitconfig)。如果要直接对这个配置进行编辑可以使用以下命令

    git config --edit --global
    

    图片 5

    注:你会注意到我们在Git安装配置那一章中所做的配置实际上就是在修改这个文件。

    存储库级别

    Repo 级别就是当前存储库的配置文件,存放在当前存储库的根目录,编辑时需要先进入当前存储库的目录,再执行以下命令

    git config --edit
    

    图片 6

    以上我们提到的.gitattribute .gitconfig .gitignore都可以通过这三个级别分别配置,越接近git repo的配置生效级别越高。

    有关gitconfig的更多配置内容请参考:FAQ #2

    获取Git配置的库的两种方式

    新建存储库

    只需要新建一个目录,然后在里面执行 git init 命令即可完成 git 库的创建。具体命令操作如下

    >> mkdir my-new-repo
    >>> git init
    

    图片 7

    克隆存储库

    首先从远程存储库获取clone地址,然后使用git clone命令即可完成克隆操作。如果远程存储库是开放的,那么克隆会立即开始;如果远程存储库是私有的,则要看你之前是否已经将账号信息通过Git Credential Manager存储,如果没有则会弹出登陆对话框。类似以下流程:

    1. 获取Git存储库地址

    如果你已经按照之前的安装配置要求创建了VSTS账号,你则可以通过 代码 | 克隆 找到存储库的url地址

    图片 8

    复制这个地址,我们就可以进行后续的 clone 操作了。

    2. 运行 git clone 命令,输入账号并完成克隆操作

    >>> git clone {远程存储库url}
    

    第一次操作一个陌生的远程存储库会需要你输入用户名和密码

    图片 9

    输入正确的用户名和密码后,克隆会开始,完成以后你就可以开始操作本地git存储库了。

    图片 10

    小结

    至此,我们已经可以获取一个Git存储库了,后面的篇章我们将开始对它进行最基本的代码修改,分支,合并,推送和历史记录查看等基本操作。


    相关文章:

    • Git企业开发者教程
    • DevOps文档中心的技术实践演进
    • 微软研发云全家桶VSTS登陆中国
    • Markdown/reST 文档发布流水线
    • 几款好用的Git GUI客户端工具
    • 使用 SSH 连接 TFS/VSTS 的GIT仓库
    • GitHub + VSTS 开源代码双向同步

    请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

    图片 11

    本文由澳门新葡4473网站发布于项目,转载请注明出处:Git 2.24 发布,分布式版本控制系统

    关键词: