`
liuhui998
  • 浏览: 100942 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Git Community Book翻译 ( 三。一)Git对象模型

阅读更多

Git Community Book翻译 ( 三。一)Git对象模型

原来在翻译的时候,Git Community Book前面的有一部分章节被略过去了 但是我留了一个编号给它们。

现在把前面的都译完了,就想把它补上。

备注:现在我建了一专门存放本书最新译本的网站:git community book中译本 .

   本章节的地址是:GIT对象模型

以后勘误时,一般只会更新 网站 不会更新博文,谢谢:)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GIT对象模型

Commit对象

"commit对象"指向一个"tree对象", 并且带有相关的描述信息.

[fig:object-commit]

你可以用 --pretty=raw 参数来配合 linkgit:git-show[1] 或 linkgit:git-log[1] 去查看某个提交(commit):

$ git show -s --pretty=raw 2be7fcb476
commit 2be7fcb4764f2dbcee52635b91fedb1b3dcf7ab4
tree fb3a8bdd0ceddd019615af4d57a53f43d8cee2bf
parent 257a84d9d02e90447b149af58b271c19405edb6a
author Dave Watson <dwatson@mimvista.com> 1187576872 -0400
committer Junio C Hamano <gitster@pobox.com> 1187591163 -0700

    Fix misspelling of 'suppress' in docs

    Signed-off-by: Junio C Hamano <gitster@pobox.com>

你可以看到, 一个提交(commit)由以下的部分组成:

  • 一个 tree  对象: tree对象的SHA1签名, 代表着目录在某一时间点的内容.

  • 父对象 (parent(s)): 提交(commit)的SHA1签名代表着当前提交前一步的项目历史. 上面的那个例子就只有一个父对象; 合并的提交(merge commits)可能会有不只一个父对象. 如果一个提交没有父对象, 那么我们就叫它“根提交"(root commit), 它就代表着项目最初的一个版本(revision). 每个项目必须有至少有一个“根提交"(root commit). 一个项目可能有多个"根提交“,虽然这并不常见(这不是好的作法).

  • 作者 : 做了此次修改的人的名字, 还有修改日期.

  • 提交者 (committer): 实际创建提交(commit)的人的名字, 同时也带有提交日期. TA可能会和作者不是同一个人; 例如作者写一个补丁(patch)并把它用邮件发给提交者, 由他来创建提交(commit).

注释 用来描述此次提交.

注意: 一个提交(commit)本身并没有包括任何信息来说明其做了哪些修改; 所有的修改(changes)都是通过与父提交(parents)的内容比较而得出的. 值得一提的是, 尽管git可以检测到文件内容不变而路径改变的情况, 但是它不会去显式(explicitly)的记录文件的更名操作. (你可以看一下 linkgit:git-diff[1] 的 -M 参数的用法)

一般用 linkgit:git-commit[1] 来创建一个提交(commit), 这个提交(commit)的父对象一般是当前分支(current HEAD), 同时把存储在当前索引(index)的内容全部提交.

对象模型

现在我们已经了解了3种主要对象类型(blob, tree 和 commit), 好现在就让我们大概了解一下它们怎么组合到一起的.

如果我们一个小项目, 有如下的目录结构:

$>tree
.
|-- README
`-- lib
    |-- inc
    |   `-- tricks.rb
    `-- mylib.rb

2 directories, 3 files

如果我们把它提交(commit)到一个Git仓库中, 在Git中它们也许看起来就如下图:

[fig:objects-example]

你可以看到: 每个目录都创建了 tree对象 (包括根目录), 每个文件都创建了一个对应的 blob对象 . 最后有一个 commit对象 来指向根tree对象(root of trees), 这样我们就可以追踪项目每一项提交内容.

2
0
分享到:
评论

相关推荐

    Git Community Book 中文版

    Git Community Book是一本专门为Git初学者准备的书籍,它以易于理解的方式介绍了Git的核心概念和基本操作。本书的开篇首先介绍了Git的基本概念,比如其存储数据的方式。Git并不是简单的记录文件的差异,而是将文件的...

    git community Book 中文版.zip

    Git Community Book 中文版.pdf 是一本面向广大Git用户的开源电子书,它详尽地介绍了Git这一版本控制系统的基础知识以及高级用法。Git是Linux之父Linus Torvalds为管理Linux内核开发而创建的分布式版本控制系统,因...

    Git Community Book(中文版)

    首先,我们要了解Git的对象模型,这涉及到四种对象类型:blob(文件快照)、tree(目录结构)、commit(版本历史记录)和annotated tag(标注标签)。每一个对象都通过SHA-1哈希值来标识。Git的目录结构包括工作目录...

    Git学习资料合集《Git community Book》,《Pro Git》, 《Git-Talk》

    包含《Git community Book》,《Pro Git》, 《Git-Talk》等多个文档。 如果只是想学会怎么使用,或者简单了解Git,可以直接参考网上的博客。 如果是想详细了解,并且有时间,推荐看一下这些教程。

    git community

    《Git Community Book》作为由全球开发者社区共同编撰的开放资源,旨在全面、深入地介绍 Git 的使用方法与最佳实践。本文将基于该书的部分内容,提炼出关键知识点,为中文读者提供一份详尽的 Git 使用指南。 #### ...

    Git 超级详细学习资料

    Git 的学习资源众多,其中《Git Community Book》是一本由全球众多贡献者共同编写的开源书籍,内容详实,旨在帮助开发者从基础到高级使用 Git。 首先,Git 的核心概念包括版本控制、版本历史、分支、合并、暂存区、...

    Git Magic的中文版

    Git是一个开源的分布式版本管理软件,在Linux下广泛使用,现在Windows下也有相应版本。 本资源包包含3个文档: Git Magic的中文版 ---推荐的学习git的参考文档 ...Git Community Book -- 英文版的git的学习材料

    git中文手册

    - **Git Community Book**:官方社区维护的书籍,涵盖了 Git 的基础知识、进阶用法及高级技巧。 - **Git User Manual**:详细的用户手册,适合查阅具体的命令用法。 - **The Git Tutorial**:教程形式介绍 Git 的...

    Git & Github 学习资料

    - `Git Community Book中文版.pdf` 是另一本社区编写的 Git 教程,可能涵盖从基础到高级的多种主题。 通过阅读这些资料,你将能深入了解 Git 的工作原理,熟练掌握 Git 的操作,以及充分利用 GitHub 进行项目管理...

    git book 中文

    《Git Community Book》是一部由全球开源社区共同编写的关于版本控制系统Git的综合指南。本书不仅覆盖了Git的基础概念和基本操作,还深入探讨了高级特性及最佳实践,旨在为用户提供全面而深入的学习资源。 #### 二...

    Pro Git 英文版

    there have been some significant additions and changes in the community surrounding Git. The second edition of this book is meant to address those changes and update the book so it can be more ...

    git 权威指南

    - **Git Community Book**:这是一个由全球Git用户共同维护的文档资源,包含了大量关于Git使用的案例和技术细节。 - **作者贡献**:该文档由众多Git爱好者共同编写,包括Alecs King、Amos Waterland、Andrew Ruder等...

    使用GIT进行源码管理——GUI客户端小结

    网络上有很多优秀的GIT教程和资源,如“git简易指南”、“Git教程(廖雪峰)”和“Git Community Book”,这些都可以帮助开发者更全面地掌握GIT的使用。 总结起来,GIT的GUI客户端为不同水平的开发者提供了方便快捷...

    Book19_ Learn RStudio IDE.pdf

    Learn RStudio IDE: Quick, Ef fective, and Productive Data Science ISBN-13 (pbk): 978-1-4842-4510-1 ISBN-13 (electronic): 978...use Github, an online community where programmers share code and projects.

    Learning ROS for Robotics Programming

    The book will take an easy-to-follow and engaging ... It is also advisable to have some background on version control systems, like svn or git, which are often used to share the code by the community.

Global site tag (gtag.js) - Google Analytics