本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:面向 Visual Studio 开发者的 Git 内部源代码(2)

时间:2017-07-13 12:40来源:668论坛 作者:www.wzatv.cc 点击:
在处理受 Git 源代码管理的 Visual Studio 项目时,典型的编辑/分段处理/提交流程如下: 根据需要,在项目中添加、编辑和删除(以下统称为“更改”)文件

在处理受 Git 源代码管理的 Visual Studio 项目时,典型的编辑/分段处理/提交流程如下: 根据需要,在项目中添加、编辑和删除(以下统称为“更改”)文件。完成后,先对部分或所有这些更改进行分段处理,然后再将文件提交到存储库中。提交后,这些更改就会变成存储库完整透明的修订记录的一部分。现在,让我们来了解一下 Git 是如何在内部管理此流程的每一步的。

有向无环图:在后台,每次提交最终成为 Git 托管的有向无环图(图论用语为“DAG”)上的顶点(节点)。DAG 代表 Git 存储库,每个顶点代表称为“提交对象”的数据元素(见图 2)。DAG 中的顶点与称为“边”的线相连;按照惯例,将 DAG 边绘制为箭头,这样可以表示父/子关系(头指向父顶点;尾指向子顶点)。原始顶点表示存储库的首次提交;终端顶点没有子顶点。DAG 边表示所连每个顶点之间的确切父子关系。由于 Git 提交对象(简称为“提交”)表示为顶点,因此 Git 可以利用 DAG 结构,对所有提交之间的父子关系进行建模,这样 Git 便能够生成从任意一次提交向后追溯到存储库初始提交的修订记录。此外,与线性图不同的是,atv,DAG 支持分支(一个父顶点有多个子顶点)和合并(一个子顶点有多个父顶点)。每当提交对象生成一个新的子顶点,便会生成 Git 分支;每当多个提交对象合并成一个子顶点时,便会发生合并。

报码:面向 Visual Studio 开发者的 Git 内部源代码

图 2:显示顶点、边、头、尾、原始顶点和终端顶点的有向无环图;3 个分支(A、B 和 C);2 个分支事件(在 A4 处);1 个合并事件(B3 和 A5 在 A6 处合并)

我已经非常详尽地介绍了 DAG 及其相关术语,因为此类知识是了解高级 Git 操作的先决条件,掌握这些知识的具体方式往往为管理 Git DAG 上的顶点。此外,DAG 有助于直观呈现 Git 存储库,广泛用于教学资料、演示和 Git GUI 工具。

Git 对象概览:到目前为止,我只提到了 Git 提交对象。不过,实际上,Git 在存储库中存储以下四种不同类型的对象:提交、树、blob 和标记。若要调查以上每种类型,请启动 Visual Studio(我使用的是 Visual Studio 2017,但支持 Git 的旧版的运作方式也类似),然后使用“文件 | 新建项目”新建一个控制台应用程序。命名项目,选中“新建 Git 存储库”复选框,然后单击“确定”。(如果之前没有在 Visual Studio 中配置过 Git,将会看到“Git 用户信息”对话框。如果看到,请指定你的姓名和电子邮件地址,每次提交时此类信息都会写入 Git 存储库。此外,若要对计算机上的每个 Git 存储库使用此类信息,请选中“设置全局 .gitconfig”复选框。)

完成后,打开“解决方案资源管理器”窗口(见图 3 中的标记 1)。可以看到,文件旁边显示有淡蓝色锁形图标,尽管我还没有进行过提交! (此示例表明,Visual Studio 有时可能会对存储库执行非预期操作。) 若要确切了解 Visual Studio 执行的操作,请查看当前分支的修订记录。

报码:面向 Visual Studio 开发者的 Git 内部源代码

图 3:新建的 Visual Studio 项目及其 Git 存储库修订记录报告

Git 将默认分支命名为“master”,并使之成为当前分支。Visual Studio 在状态栏的右边缘显示当前分支的名称(标记 2)。当前分支表示 DAG 上将成为下一次提交的父级的提交对象(稍后将会详细介绍分支)。若要查看当前分支的提交修订记录,请单击主分支标签(标记 2),然后选择菜单中的“查看修订记录”(标记 3)。

随即出现的“修订记录 - 主分支”窗口在多列中显示信息。左侧(标记4)是 DAG 上的两个顶点;每个顶点均经过图形处理,在 Git DAG 上表示一次提交。“ID”、“作者”、“日期”和“消息”列(标记 5)显示每次提交的详细信息。主分支的 HEAD 以深红色指针(标记 6)表示,我将在本文快结束时全面讲解这其中的含义。此 HEAD 标记了当提交在 DAG 中添加了新顶点后下一个边箭头的头位置。

报告显示 Visual Studio 进行了两次提交,每次提交都有自己的提交 ID(标记 7)。第一次(最早)提交由 ID a759f283 进行唯一标识;第二次提交则由 bfeb0957 进行唯一标识。这些值截取自包含 40 个字符的完整十六进制安全哈希算法 1 (SHA-1)。SHA-1 是一种加密哈希函数,旨在通过获取消息(如提交数据)并创建消息摘要(即完整的 SHA-1 哈希值,如提交 ID)来检测是否有损坏。简单来说,SHA-1 哈希算法的行为不仅类似于校验和,还类似于 GUID,因为有大约 1.46 x 1048 个唯一组合。与其他许多 Git 工具一样,Visual Studio 仅显示完整值的前 8 个字符,因为有 43 亿个惟一值,足以在日常工作中避免冲突发生。若要查看完整的 SHA-1 值,请将鼠标悬停在“修订记录报告”(标记 8)中的行之上。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容