ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 系统运维 >> 欢迎使用CSDN-markdown编辑器

欢迎使用CSDN-markdown编辑器(1/14)

来源:网络整理     时间:2016-05-26     关键词:markdown

本篇文章主要介绍了"欢迎使用CSDN-markdown编辑器",主要涉及到markdown方面的内容,对于系统运维感兴趣的同学可以参考一下: Translated from http://maryrosecook.com/blog/post/git-from-the-inside-out.本文原地址:...

Translated from http://maryrosecook.com/blog/post/git-from-the-inside-out.

本文原地址:https://github.com/pysnow530/git-from-the-inside-out/blob/master/README.md

彻底理解Git

本文主要解释git的工作原理。如果你是一个视频党,请移步youtube视频。

本文假设你已经了解Git,并可以使用它来对项目做版本控制。我们主要考察支撑Git的图结构和指导Git行为的图属性。在考察原理时,我们会创建真实的状态模型,而不是通过各种实验的结果妄做猜想。通过这个真实的状态模型,我们可以更直观地了解git已经做了什么,正在做什么,以及接下来要做什么。

本文结构组织为一系列的Git命令,针对一个单独的项目展开。在关键的地方,我们会观察Git当前状态的图结构,并解释图属性及其产生的行为。

如果你读完本文后仍意犹未尽,可以看一下maryrosecook对Git的JavaScript实现 ,里面包含了大量注释。

创建项目

~ $ mkdir alpha
~ $ cd alpha

创建项目目录alpha

~/alpha $ mkdir data
~/alpha $ printf 'a' > data/letter.txt

进入alpha目录,创建目录data。在data目录下,创建内容为a的文件letter.txt。现在,alpha的目录结构如下:

alpha
└── data
    └── letter.txt

初始化仓库

~/alpha $ git init
Initialized empty Git repository

git init命令将当前目录添加到Git仓库。为此,它会在当前目录下创建一个.git目录并写入一批文件。这些文件记录了Git配置和版本历史的所有信息。它们都是一些普通的文件,并没什么特别。用户可以使用编辑器或shell命令对它们进行浏览或编辑。也就是说,用户可以像编辑他们的项目文件一样来浏览或编辑项目的版本历史。

现在,alpha的目录结构变成了这个样子:

alpha
├── data
│   └── letter.txt
└── .git
    ├── objects
    etc...

.git目录和它的内容是由Git创建的。其它文件组成了工作区,是由用户创建的。

添加文件

~/alpha $ git add data/letter.txt

添加data/letter.txt文件到Git。该操作有两个影响。

第一,它会在.git/objects/目录下创建一个新的blob文件。

这个blob文件包含了data/letter.txt文件压缩后的内容,文件名取自内容的哈希值。哈希意味着执行一段算法,将给定内容转换为更小的1,且能唯一2确定原内容的值的过程。例如,Git对a作哈希得到2e65efe2a145dda7ee51d1741299f848e5bf752e。哈希值的头两个字符用作对象数据库的目录名:.git/objects/2e/,剩下的字符用作blob文件的文件名:.git/objects/2e/65efe2a145dda7ee51d1741299f848e5bf752e

相关图片

相关文章