赞
踩
工作区:在电脑上写代码或⽂件的⽬录
暂存区(stage
/index
):⼀般存放在.git
目录下的index
文件(.git/index
)
index
)版本库(仓库):.git
不算⼯作区,⽽是Git的版本库
⼯作区、暂存区和版本库之间的关系
master
分⽀,以及指向master
的⼀个指针叫HEAD
git add
命令时,暂存区⽬录树的⽂件索引会被更新git commit
时,master分⽀会做相应的更新
综上:通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件,必须要通过使⽤git add
和git commit
命令才能将⽂件添加到仓库中进⾏管理
是谁在维护版本呢?
objects
对象库在维护,里面存放了很多git对象git add
后所修改的内容index
:暂存区,git add
后的内容都是添加到这里的HEAD
:默认指向master
分支的指针$ cat .git/HEAD
ref: refs/heads/master
master
分支,里面保存着最新的commit id
$ cat .git/refs/heads/master
d74fd33ce217d9d6aefab18c84a3c4fb542d293e
objects
为Git的对象库,⾥⾯包含了创建的各种版本的库对象及内容git add
时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,位于".git/object
s"⽬录下objects
├── 78
│ └── c38e74ed7bad28f712b4b214fcc1f1dc2814b6
├── 7a
│ └── 535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3
├── 84
│ └── ef513c15700a4fc435dd6e6ac284a49d7901ac
├── 8a
│ └── e26cc86d8c9213c406383181dad60050e15df6
├── 99
│ └── a6aad83baf0a7fdb6cf394f11ccde7845bcb1d
├── d7
│ └── 4fd33ce217d9d6aefab18c84a3c4fb542d293e
├── info
└── pack
object
时要将commit id
分成2部分,前2位是⽂件夹名称,后38位是⽂件名称git cat-file
$ git cat-file -p d74fd33ce217d9d6aefab18c84a3c4fb542d293e
tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac
parent 7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3
author DieSnowK <23336666@qq.com> 1721717265 +0800
committer DieSnowK <23336666@qq.com> 1721717265 +0800
666.txt
tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac
$ git cat-file -p 84ef513c15700a4fc435dd6e6ac284a49d7901ac
100644 blob 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d 233.txt
100644 blob 78c38e74ed7bad28f712b4b214fcc1f1dc2814b6 666.txt
$ git cat-file -p 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d
SnowK
index
:暂存区,git add
后会更新该内容HEAD
:默认指向master
分⽀的⼀个指针refs/heads/master
:⽂件⾥保存当前master
分⽀的最新commit id
objects
:包含了创建的各种版本库对象及内容
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。