美文网首页Git简单应用
Git入门简单用法与Git对象原理

Git入门简单用法与Git对象原理

作者: 28f9a2e97e4d | 来源:发表于2016-12-13 20:44 被阅读28次

    之前一直在用github,对于git以及github的图形客户端的常用方法有一定的了解。这片文章主要介绍下git的入门用法与git对象原理:

    常用命令

    git add //添加所有的文件到索引
    git commit //向本地源码库提交,会打开默认vi编辑器写注释
    git push origin master //把本地源码库push到github上
    git pull origin master //从github上pull到本地源码库
    

    新建项目举例说明

    git config --global user.name "bailitusu"
    git config --global user.email xxxx@qq.com
    
    mkdir ProjTest
    cd ProTest
    git init
    touch README
    git add README
    git commit -m 'test commit'
    git remote add origin https://github.com/bailitusu/ProjTest.git
    git push -u origin master
    

    Git对象原理介绍

    Git 是一套内容寻址文件系统。从内部来看,Git 是简单的 key-value 数据存储。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。可以通过底层命令hash-object 来示范这点,传一些数据给该命令,它会将数据保存在 .git 目录并返回表示这些数据的键值。首先初使化一个 Git 仓库并确认objects 目录是空的:



    Git 初始化了 objects 目录,同时在该目录下创建了 pack 和 info 子目录,但是该目录下没有其他常规文件。我们往这个 Git 数据库里存储一些文本:



    参数 -w 指 hash-object 命令存储 (数据) 对象,若不指定这个参数该命令仅仅返回键值。--stdin 指定从标准输入设备 (stdin) 来读取内容,若不指定这个参数则需指定一个要存储的文件的路径。该命令输出长度为 40 个字符的校验和。这是个 SHA-1 哈希值──其值为要存储的数据加上一种头信息的校验和。现在可以查看到 Git 已经存储了数据:

    可以在 objects 目录下看到一个文件。这便是 Git 存储数据内容的方式──为每份内容生成一个文件,取得该内容与头信息的 SHA-1 校验和,创建以该校验和前两个字符为名称的子目录,并以 (校验和) 剩下 38 个字符为文件命名 (保存至子目录下)。
    通过 cat-file 命令可以将数据内容取回。传入 -p 参数可以让该命令输出数据内容的类型:



    可以往 Git 中添加更多内容并取回,也可以直接添加文件。比方说可以对一个文件进行简单的版本控制。首先,创建一个新文件,并把文件内容存储到数据库中:

    接着往该文件中写入一些新内容并再次保存:

    数据库中已经将文件的两个新版本连同一开始的内容保存下来了:


    再将文件恢复到第一个版本:


    同样方法也可以回复到其它版本。需要记住的是几个版本的文件 SHA-1 值可能与实际的值不同,其次,存储的并不是文件名而仅仅是文件内容。这种对象类型称为 blob 。通过传递 SHA-1 值给cat-file -t 命令可以让 Git 返回任何对象的类型

    PS:先介绍这些,关于git对象的存储等原理有兴趣的可以私信我。

    相关文章

      网友评论

        本文标题:Git入门简单用法与Git对象原理

        本文链接:https://www.haomeiwen.com/subject/lisrmttx.html