git原理初探

.git文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$mkdir git-demo   
$cd git-demo
$git init
$cd .git/

$ ls -al

total 11

config #config 文件包含了项目特有的配置选项
description #description 文件仅供 GitWeb 程序使用,所以不用关心这些内容。
HEAD #HEAD 文件指向当前分支
hooks/ #hooks 目录保存了第七章详细介绍了的客户端或服务端钩子脚本。
info/ #info 目录保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件
objects/ #objects 目录存储所有数据内容
refs/ #refs 目录存储指向数据 (分支) 的提交对象的指针

初始化git项目的时候,会产生一个隐藏文件夹.git。里面包含了记录项目所有的文件

重点

  • Git 保存的不是文件差异或者变化量,而只是一系列文件快照。所以大部分情况下,.git文件夹的可能要比项目本身还大。尤其是随着commit的次数增多,.git文件夹会越来越多。
  • git可以做很多事情。比如可以基于git搭建一套管理平台,github,gitlab,code.aliyun.com 等等都是这样做的。基于git的hooks文件夹,还可以搭建一套持续交付系统,比如阿里的crp.aliyun.com。
  • 不过git的主要功能还是为了开发,人们有很多基于git的工作流,nbugs目前采用的是预上线版本的gitflow工作流。
  • 大致上搞明白了git merge和git rebase的区别。
  • 剩下的,以后遇到了可以参考git-scm进行扩展。