IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    .git目录下文件及目录功能简介

    rock发表于 2015-04-14 09:57:07
    love 0
    运行了git add和git commit没有将文件上传到服务器,那么都干了什么呢?先来说说git 的机制,git既然为分布式的版本控制工具,那就有别于svn集中管理式的机制。git是如何实现的呢?很简单将版本库完整的克隆一份到本地,这样就完成了任何人都为自己的git版本库做主的转换,这些文件就在你本机的.git下面
    运行 ls .git有如下结果:
    ls .git/
    branches config description HEAD hooks index info logs objects packed-refs refs
    下面来简单说一下这些文件及目录的用途
    branches: 新版本的 Git 不再使用这个目录
    config: 全局级别的配置文件,使用git config --global的配置都会写在这里
    description: description is just a text file that is shown as project description in web frontend. Just write there something that explains what the repository is about。(应用参照:http://tosbourn.com/editing-git-repository-descriptions/)
    HEAD: 指向当前工作分支的指向,没有分支指向ref: refs/heads/master,假设你运行如下命令查看当前工作的分支(分支的部分后面详讲),对比HEAD的变化
    git 入门级使用(stage) - rock - 牧笔临风
    hooks: 目录保存客户端及服务器端一些特定操作时触发的脚本,默认不生效,需要去掉结尾的.sample才生效
    index: 文件保存了暂存区域信息,这是一个二进制文件,里面是什么呢?可以使用 git ls-files --stage来查看,我们先来看我们的项目下面都有什么,再看它就明白了,它里面保存的就是当前你的工作区中的文件,第一列是权限,第二列是sha1值,第三列是文件名
    git 入门级使用(stage) - rock - 牧笔临风
    指定了文件模式为 100644,表明这是一个普通文件。其他可用的模式有:100755 表示可执行文件,120000 表示符号链接
    info: 目录保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件
    logs: 记录操作历史,在灾难恢复中特别有用
    objects: 目录存储所有数据内容
    packed-refs: 维护时运行的auto gc命令将将refs文件挪到.git/packed-refs中以提高效率,当更新一个引用时,Git 不会修改这个文件,而是在 refs/heads 下写入一个新文件。当查找一个引用的 SHA 时,Git 首先在refs 目录下查找,如果未找到则到 packed-refs 文件中去查找。因此如果在 refs 目录下找不到一个引用,该引用可能存到packed-refs 文件中去了。
    refs: 目录存储指向数据 (分支) 的提交对象的指针
    上面的文件和目录中以HEAD、index、objects和refs最为重要。




沪ICP备19023445号-2号
友情链接