1 / 15
文档名称:

Git使用.doc

格式:doc   大小:451KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Git使用.doc

上传人:非学无以广才 2021/1/10 文件大小:451 KB

下载得到文件列表

Git使用.doc

文档介绍

文档介绍:Git 分支
几乎每一个版本控制系统全部以某种形式支持分支。 使用分支意味着你能够从开发根本上分离开来, 然后在不影响根本同时继续工作。 在很多版本控制系统中, 这是个昂贵过程, 常常需要创建一个源代码目录完整副本, 对大型项目来说会花费很长时间。
有些人把 Git 分支模型称为“必杀技特征”, 而正是因为它, 将 Git 从版本控制系统家族里区分出来。 Git 有何尤其之处呢?Git 分支可谓是难以置信轻量级, 它新建操作几乎能够在瞬间完成, 而且在不一样分支间切换起来也差不多一样快。 和很多其它版本控制系统不一样, Git 激励在工作步骤中频繁使用分支和合并, 哪怕一天之内进行许数次全部没相关系。 了解分支概念并熟练利用后, 你才会意识到为何 Git 是一个如此强大而独特工具, 并以后真正改变你开发方法。
 
  何谓分支
为了了解 Git 分支实现方法, 我们需要回顾一下 Git 是怎样储存数据。 或许你还记得第一章内容, Git 保留不是文件差异或改变量, 而只是一系列文件快照。
在 Git 中提交时, 会保留一个提交(commit)对象, 该对象包含一个指向暂存内容快照指针, 包含此次提交作者等相关隶属信息, 包含零个或多个指向该提交对 象父对象指针: 首次提交是没有直接祖先, 一般提交有一个祖先, 由两个或多个分支合并产生提交则有多个祖先。
为直观起见, 我们假设在工作目录中有三个文件, 准备将它们暂存后提交。 暂存操作会对每一个文件计算校验和(即第一章中提到 SHA-1 哈希字串), 然后把目前版本文件快照保留到 Git 仓库中(Git 使用 blob 类型对象存放这些快照), 并将校验和加入暂存区域:
$ git add README LICENSE
$ git commit -m 'initial commit of my project'
当使用 git commit 新建一个提交对象前, Git 会先计算每一个子目录(本例中就是项目根目录)校验和, 然后在 Git 仓库中将这些目录保留为树(tree)对象。 以后 Git 创建提交对象, 除了包含相关提交信息以外, 还包含着指向这个树对象(项目根目录)指针, 如此它就能够在未来需要时候, 重现此次快照内容了。
现在, Git 仓库中有五个对象: 三个表示文件快照内容 blob 对象; 一个统计着目录树内容及其中各个文件对应 blob 对象索引 tree 对象; 和一个包含指向 tree 对象(根目录)索引和其它提交信息元数据 commit 对象。 概念上来说, 仓库中各个对象保留数据和相互关系看起来图 3-1 所表示:
图 3-1. 单个提交对象在仓库中数据结构
作些修改后再次提交, 那么这次提交对象会包含一个指向上次提交对象指针(译注: 即下图中 parent 对象)。 两次提交后, 仓库历史会变成图 3-2 样子:
图 3-2. 多个提交对象之间链接关系
现在来谈分支。 Git 中分支, 其实本质上仅仅是个指向 commit 对象可变指针。 Git 会使用 master 作为分支默认名字。 在若干次提交后, 你其实已经有了一个指向最终一次提交对象 master 分支, 它在每次提交时候全部会自动向前移动。
图 3-3. 分支其实就是从某个提交对象往回看历史
那么, Git 又是怎样创建一个新分支呢?答案很简单, 创建一个新分支指针。 比如新建一个 testing 分支, 能够使用 git branch 命令:
$ git branch testing
这会在目前 commit 对象上新建一个分支指针(见图 3-4)。
图 3-4. 多个分支指向提交数据历史
那么, Git 是怎样知道你目前在哪个分支上工作呢?其实答案也很简单, 它保留着一个名为 HEAD 尤其指针。 请注意它和你熟知很多其它版本控制系统(比如 Subversion 或 CVS)里 HEAD 概念大不相同。 在 Git 中, 它是一个指向你正在工作中当地分支指针(译注: 将 HEAD 想象为目前分支别名。 )。 运行git branch 命令, 仅仅是建立了一个新分支, 但不会自动切换到这个分支中去, 所以在这个例子中, 我们仍然还在 master 分支里工作(参考图 3-5)。
图 3-5. HEAD 指向目前所在分支
要切换到其它分支, 能够实施 git checkout 命令。 我们现在转换到新建 testing 分支:
$ git checkout testing
这么 HEAD 就指向了 testing 分支(见图3