git 基本概念

工作目录、暂存区和版本库

版本库中文件三种状态

-已修改:modified

-已暂存: stagged

-已提交: committed

三大工作区:

工作目录、暂存区和版本库(仓库)

工作区下的文件状态:

-未被追踪:untracked

-被追踪:tracked

.git存放的是版本信息

								.git目录 说明
仓库子目录功能描述
branches项目分支信息
hooks默认的hook脚本,由特定时间触发
info内有exclude文件,指定git要忽略的文件
.logs历史记录,删除的commit 对象等
objectsgit数据对象,commit ,tree, blod ,tag
refsgit 引用,指向(远程分支、标签的指针)
configgit项目配置信息
HEAD指向当前的分支的末端
indexstagint area 暂存区
commit_edit最后一次提交的注释
descriptiongit项目信息描述

Git对象模型

对象(object s)

–类型:4种数据对象:blod tree commit tag

–大小: 对象数据内容的大小

–文件名:如果使用SHA1算法生成

SHA1对象数据

– 用40个字符的字符串用来表示对象名: 目录 + 名

– 字符串由对象内容做SHA-1计算得来

– 通过比较SHA-1 值来比较两个文件内容:

不同类型的对象用途

  • blob :存储文件数据,通常是一个文件
  • tree : 类似一个目录, 用来管理tree和blob
  • commit:指向一个tree,标记项目某个特定时间点状态
  • tag : 用来标记某一个提交

blod对象

–对象全部是二进制格式数据

查看blob文件内容

git show SHA1
git cat-file -p SHA1
git cat-file -t SHA1

tree 对象

  • 包括: mode 、对象类型、SHA1值、名字
  • 一串指向blob或者其他tree对象的指针
  • 表示目录树的内容、内容之前的层次目录关系

查看tree对象内容

git ls-tree SHA1
git cat-file -p master^{tree}
git cat-file -p SHA1

commit 对象

  • 用来指向一个tree对象

  • 组成

    1. 一个tree对象
    2. 父对象:一个目录必须有根提交
    3. 作者:修改人名字、日期
    4. 提交者:实际创建提交的名字、日期
  • 一个提交本身并没有包含任何信息说明其做了任何修改,所以修改都是通过与父提交比较的来

提交commit对象

  • 使用git commit命令提交
  • 将存储在暂存区的index全部提交
  • 提交的父对象为当前分支HEAD

tag对象

标签对象

  • 组成

    对象名、对象类型、标签名、标签创建者名字

  • 指向一个commit的SHA1

  • 与分支比较

    都是指向一个commit

    标签可以看作是一个常量指针,不能修改

    分支是一个变量指针

查看标签信息

git cat-file -p v1.0
git tag -a -m "add v1.2" v1.2   //生成tag信息

git 引用

引用的本质:指针

分支、标签都是对提交的引用(指向commit 的指针)

引用存放的路径:.git/refs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值