• Sun-Bryant
    2018-12-14
    // 09|探秘.git目录
    //cat命令主要用来查看文件内容,创建文件,文件合并,追加文件内容等功能。
    cat HEAD 查看HEAD文件的内容
    git cat-file 命令 显示版本库对象的内容、类型及大小信息。
    git cat-file -t b44dd71d62a5a8ed3 显示版本库对象的类型
    git cat-file -s b44dd71d62a5a8ed3 显示版本库对象的大小
    git cat-file -p b44dd71d62a5a8ed3 显示版本库对象的内容

    HEAD:指向当前的工作路径
    config:存放本地仓库(local)相关的配置信息。
    refs/heads:存放分支
    refs/tags:存放tag,又叫里程牌 (当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)
    objects:存放对象 .git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件。
    展开

    作者回复: 👍

    
     45
  • iyhjiang
    2018-12-11
    .git 文件目录

    •    COMMIT_EDITMSG
    •    config 当前 git 的配置文件
    •    description (仓库的描述信息文件)
    •    HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop
    •    hooks [文件夹]
    •    index
    •    info [文件夹]
    •    logs [文件夹]
    •    objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看)
    •    ORIG_HEAD
    •    refs [文件夹]
          •    heads (存放当前项目的所有分支)
          •    tags (存放的当前项目的所有标签,又叫做里程碑)

    •    cat 命令, 功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容
    •    ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)
    •    git cat-file -t 命令 , 查看 git 对象的类型
    •    git cat-file -p 命令, 查看 git 对象的内容
    •    git cat-file -s 命令, 查看 git 对象的大小
    展开

    作者回复: 👍

    
     18
  • crown
    2018-12-11
    文件内容相同,git眼里就是唯一的blob , 这很常见,就是享元模式吧。 lua,Python等语言中,相同字符串,其实只分配一次内存,地址一样,指向同一个对象,可以节省内存。

    作者回复: 对不做数据结构设计的人来说,还是新鲜的。从您这里,我又学习了享元模式

    
     10
  • 包包up
    2018-12-11
    分支对于一个0基础的人来说,其实是很陌生的概念。视频并没有讲到这个概念,感觉会不利于0基础的人学习。

    作者回复: .git探秘那节视频讲到过的。其次,我们后面工作流相关的会重点讲

    
     5
  • Jefitar
    2019-01-24
    讲得太棒了,正合我口味,哈哈😄

    作者回复: 加油2019

    
     4
  • Mayer
    2019-01-29
    为什么config文件中,只保存了设置local的信息,设置了global的就没有呢

    作者回复: hi,global的是全局的,当然不好在某个git仓库里面,如果这个仓库删除了怎么办?所以,它在当前账号路径下的.gitconfig文件里面

     1
     3
  • 花花young
    2019-02-26
    老师,能不能讲讲hooks文件的东西呢?
     1
     2
  • 0.0
    2018-12-19
    没有课件么,想要课件学习效率会快
    
     2
  • 灰
    2018-12-18
    课程里看的文件里面都是hash值,cat-file -p的时候,得到的blob文件内容是存储在哪里的
    
     2
  • 朱雯
    2019-01-01
    objects:存放对象 .git/objects/ 文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件
    其实关于这一点我是比较疑惑的 为什么object要以前两位作为文件夹命名 然后要取前两位作为文件夹名称 这是第一 为什么不以commit tree 和blob这样的格式进行变化呢 简单思考之后认为是节约硬盘容量 防止过于臃肿 但是问题又来了 为什么不直接将所有的内容都放到一个人object下 不用多增加层级和文件夹了 如果非要增加为什么是两位 有什么特殊原因吗
    
     1
  • 希言自然
    2019-11-15
    这一章后面听的有点懵,特别是指针指向那边,悟性太低,谢谢老师。不知道平时是否可以给您发邮件或有微信学习群这样的组织可以随时随地咨询问题的?
    
    
  • 我愿化身石桥→_→
    2019-09-09
    老师 index 里边的内容如何查看
    我查到了 git ls-files --stage 但是感觉并不是我想要的;
    可以像 git cat-files 一样查看么

    作者回复: 你的第一个步骤很好。
    1)显示暂存区所有文件对应的属性,包括blob的hash值。假设 $ git ls-files --stage 输出:
    100644 40e60301 0 LICENSE
    100644 10730a62 0 README.md

    2)用文件对应的blob查看文件的内容。比如:
          $ git cat-file -p 10730a62
          就会输出暂存区 README.md 文件的内容了。



       

    
    
  • 我听你说……
    2019-07-23
    老师,怎么理解分支?分支的具体表现是怎样的。

    作者回复: 分支,通俗地说就是独立的工作空间,在一定时间内保持各自研发的独立性,等分支开发的模块成熟后再合体到集成分支

    
    
  • Geek_f6f02b
    2019-05-04
    文件内容相同就是唯一的,应该会省空间,然后还能准确知道是否是变更名称
    
    
  • Amanda
    2019-03-28
    接触了几种 git 对象:tag、commit、tree、blob,后三者为 git 核心的对象类型
    
    
  • 心在飞
    2019-03-04
    听了苏老师的.git目录探秘,豁然开朗。苏老师讲的真棒!

    作者回复: 这讲的内容,当年我自己也是这么搭环境,消除git对象存储的困惑的。

    
    
  • 逐风随想
    2019-01-18
    玲玲老师,这章节消化不了怎么办。

    作者回复: 😄,暂时跳过去。以后git命令摸的熟了,再回来看吧

    
    
  • Jackzhoumine
    2019-01-17
    老师,当前只有一个master 分支,都提交,并push到远程仓库了,然后在master 分支上新建一个分支,master 会显示落后一个提交。这是为什么?
    $ git status
    On branch master
    Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
      (use "git pull" to update your local branch)

    nothing to commit, working tree clean

    $ git branch -av
    * master 16adfc5 [behind 1] 搜索结果排序
      temp 16adfc5 搜索结果排序
      remotes/origin/HEAD -> origin/master
      remotes/origin/master c7d1239 '
    展开

    作者回复: 我怀疑你说的不是新建一个分支,而是在远端服务器上新建一个commit吧

    
    
  • 顾小兔
    2018-12-22
    老师,我有个gitee码云上的多分支项目
     $git branch -av
    * master d3f9231 更新 README.md
      remotes/origin/HEAD -> origin/master
      remotes/origin/database fc13146 初始化数据库环境
      remotes/origin/gogs 827c95b 更新 docker-compose.yml
      remotes/origin/jenkins 0b97e67 删除文件start.sh
      remotes/origin/master d3f9231 更新 README.md
      remotes/origin/tomcat 3124547 初始化环境
      remotes/origin/vpn 6637695 初始化vpn搭建环境
    所以在refs目录下会有一个remotes目录
    $ ls .git/refs/
    heads/ remotes/ tags/
    但是显示remotes下目录时,却只有HEAD
    $ ls .git/refs/remotes/origin/
    HEAD
    查看HEAD发现指向远程仓库分支origin/master,但是所有远程仓库分支都无法再refs/remotes下找到
    $ cat .git/refs/remotes/origin/HEAD
    ref: refs/remotes/origin/master
    同样我测试另外一个项目(打了tag),查看refs/tags下也没有
    $ ls .git/refs/tags/
    展开
    
    
  • 夕夕熊
    2018-12-21
    哇 我好像漏掉了什么 tag是在那节课生成的啊
    
    
我们在线,来聊聊吧