[Git][认识Git]具体讲解

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661


1.什么是仓库?



  • 仓库:进⾏版本控制的⼀个⽂件⽬录

2.认识工作区、暂存区、版本库



  • 工作区:在电脑上写代码或⽂件的⽬录
  • 暂存区(stage/index):⼀般存放在.git目录下的index文件(.git/index)

    • 暂存区有时也叫作索引(index)

  • 版本库(仓库):.git不算⼯作区,⽽是Git的版本库

    • 这个版本库⾥⾯的全部⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时候都可以追踪历史,或者在未来某个时候可以“还原”

  • ⼯作区、暂存区和版本库之间的关系

    • 在创建Git版本库时,Git会⾃动创建⼀个唯⼀的master分⽀,以及指向master的⼀个指针叫HEAD
    • 当对⼯作区修改(新增、修改、删除)的⽂件执⾏git add下令时,暂存区⽬录树的⽂件索引会被更新
    • 当执⾏提交操纵git commit时,master分⽀会做相应的更新

      • 可以简单理解为暂存区的⽬录树才会被真正写到版本库中



  • 综上:通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件,必须要通过使⽤git add和git commit下令才气将⽂件添加到仓库中进⾏管理
  • 是谁在维护版本呢?

    • objects对象库在维护,里面存放了很多git对象
    • 修改的工作区内容会写入对象库的一个新的git对象中
    • 每一个git对象,都描述了此次git add后所修改的内容


3.认识 .git

1.index



  • index:暂存区,git add后的内容都是添加到这里的

2.HEAD && master



  • HEAD:默认指向master分支的指针
    1. $ cat .git/HEAD
    2. ref: refs/heads/master
    复制代码
  • 默认的master分支,里面生存着最新的commit id
    1. $ cat .git/refs/heads/master
    2. d74fd33ce217d9d6aefab18c84a3c4fb542d293e
    复制代码

3.objects



  • objects为Git的对象库,⾥⾯包含了创建的各种版本的库对象及内容
  • 当执⾏git add时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,位于".git/objects"⽬录下
    1. objects
    2. ├── 78
    3. │   └── c38e74ed7bad28f712b4b214fcc1f1dc2814b6
    4. ├── 7a
    5. │   └── 535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3
    6. ├── 84
    7. │   └── ef513c15700a4fc435dd6e6ac284a49d7901ac
    8. ├── 8a
    9. │   └── e26cc86d8c9213c406383181dad60050e15df6
    10. ├── 99
    11. │   └── a6aad83baf0a7fdb6cf394f11ccde7845bcb1d
    12. ├── d7
    13. │   └── 4fd33ce217d9d6aefab18c84a3c4fb542d293e
    14. ├── info
    15. └── pack
    复制代码
  • 查找object时要将commit id分成2部分,前2位是⽂件夹名称,后38位是⽂件名称
  • 检察版本库对象的内容:git cat-file
    1. $ git cat-file -p d74fd33ce217d9d6aefab18c84a3c4fb542d293e
    2. tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac
    3. parent 7a535a4f3e6dba8a8dbcea9d7e3ee3c395aeabf3
    4. author DieSnowK <23336666@qq.com> 1721717265 +0800
    5. committer DieSnowK <23336666@qq.com> 1721717265 +0800
    6. 666.txt
    复制代码
  • 此中tree 84ef513c15700a4fc435dd6e6ac284a49d7901ac
    1. $ git cat-file -p 84ef513c15700a4fc435dd6e6ac284a49d7901ac
    2. 100644 blob 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d    233.txt
    3. 100644 blob 78c38e74ed7bad28f712b4b214fcc1f1dc2814b6    666.txt
    复制代码
  • 恣意检察此中的一个文件,发现是对每个文件做的修改,被Git记录了下来
    1. $ git cat-file -p 99a6aad83baf0a7fdb6cf394f11ccde7845bcb1d
    2. SnowK
    复制代码

4.总结



  • index:暂存区,git add后会更新该内容
  • HEAD:默认指向master分⽀的⼀个指针
  • refs/heads/master:⽂件⾥生存当前master分⽀的最新commit id
  • objects:包含了创建的各种版本库对象及内容

    • 可以简单理解为存放了Git维护的全部修改



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表