git设计哲学
$ mkdir test
$ cd test
$ git init
Initialized empty Git repository in /Users/lyc/Desktop/test/.git/
.git/
|--HEAD
|--config
|--description
|--hooks
| |--applypatch-msg.sample
| |--commit-msg.sample
| |--post-commit.sample
| |--post-receive.sample
| |--post-update.sample
| |--pre-applypatch.sample
| |--pre-commit.sample
| |--pre-rebase.sample
| |--prepare-commit-msg.sample
| |--update.sample
|--info
| |--exclude
|--objects
| |--info
| |--pack
|--refs
- description文件仅供GitWeb使用,不用关心它。
- config文件包含了项目特有的配置选项,如最常用的用户名和邮箱。
- info目录保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件。这个用得比较少,也不用太关心。
- hooks目录保存了客户端或服务端钩子脚本,一般我们都是用默认的,很少改,也不用太关心。
因此,我们需要重点关心另外四个重要的文件或目录:HEAD和index文件,objects和refs目录,因为它们是Git的核心:
- objects 目录存储所有数据内容。
- refs 目录存储指向数据 (分支) 的提交对象的指针。
- HEAD 文件指向当前分支。
- index 文件保存了暂存区域信息。
$ find .git/objects
.git/objects
.git/objects/info
.git/objects/pack
$ echo test1 > test1.txt
$ git add test1.txt
.git/
|--index
|--objects
| |--a5
| | |-- bce3fd2565d8f458555a0c6f42d0504a848bd5
$ find .git/objects
.git/objects
.git/objects/a5
.git/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
.git/objects/info
.git/objects/pack
$ git hash-object test1.txt
a5bce3fd2565d8f458555a0c6f42d0504a848bd5
$ git cat-file -p a5bce3fd2565d8f458555a0c6f42d0504a848bd5
test1
$ git ls-files --stage
a5bce3fd2565d8f458555a0c6f42d0504a848bd5 test1.txt
$ git commit -m "first commit"
[master (root-commit) a3951d5] first commit
file changed, insertion(+)
create mode test1.txt
$ find .git/objects
.git/objects
.git/objects/a3
.git/objects/a3/951d57b1413275b171d967fa67fd90eecff648
.git/objects/a5
.git/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
.git/objects/c0
.git/objects/c0/da834e42dcbf7b2b1c4a97925bef105d3863a3
.git/objects/info
.git/objects/pack
$ git cat-file -p a3951d57b1413275b171d967fa67fd90eecff648
tree c0da834e42dcbf7b2b1c4a97925bef105d3863a3
author lyc <yechenli2009@gmail.com> +
committer lyc <yechenli2009@gmail.com> + first commit $ git cat-file -p c0da834e42dcbf7b2b1c4a97925bef105d3863a3
blob a5bce3fd2565d8f458555a0c6f42d0504a848bd5 test1.txt
$ mkdir temp
$ cd temp/
$ echo "test2" > test2.txt
$ git add temp
$ git commit -am “second commit"
$ find .git/objects
.git/objects
.git/objects/
.git/objects//0cf8328022becee9aaa2577a8f84ea2b9f3827
.git/objects/
.git/objects//592c587f70cf6ec1b99bb382bec2ef92f83396
.git/objects/9e
.git/objects/9e/7b8054ac3ca530d8e69556dff5903cdcbdc4d3
.git/objects/a3
.git/objects/a3/951d57b1413275b171d967fa67fd90eecff648
.git/objects/a5
.git/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5
.git/objects/c0
.git/objects/c0/da834e42dcbf7b2b1c4a97925bef105d3863a3
.git/objects/d2
.git/objects/d2/5d2289339c751ff3f7e1ef1865a58c71d0f51c
.git/objects/info
.git/objects/pack
$ git log
commit d25d2289339c751ff3f7e1ef1865a58c71d0f51c
Author: lyc <yechenli2009@gmail.com>
Date: Sun Oct :: + second commit commit a3951d57b1413275b171d967fa67fd90eecff648
Author: lyc <yechenli2009@gmail.com>
Date: Sun Oct :: + first commit
.git/objects/d2/5d2289339c751ff3f7e1ef1865a58c71d0f51c
$ git cat-file -p d25d2289339c751ff3f7e1ef1865a58c71d0f51c
tree 35592c587f70cf6ec1b99bb382bec2ef92f83396
parent a3951d57b1413275b171d967fa67fd90eecff648
author lyc <yechenli2009@gmail.com> +
committer lyc <yechenli2009@gmail.com> + second commit
.git/objects//592c587f70cf6ec1b99bb382bec2ef92f83396
$ git cat-file -p 35592c587f70cf6ec1b99bb382bec2ef92f83396
tree 9e7b8054ac3ca530d8e69556dff5903cdcbdc4d3 temp
blob a5bce3fd2565d8f458555a0c6f42d0504a848bd5 test1.txt
.git/objects/9e/7b8054ac3ca530d8e69556dff5903cdcbdc4d3
$ git cat-file -p 9e7b8054ac3ca530d8e69556dff5903cdcbdc4d3
blob 180cf8328022becee9aaa2577a8f84ea2b9f3827 test2.txt
.git/objects//0cf8328022becee9aaa2577a8f84ea2b9f3827

git设计哲学的更多相关文章
- git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学
小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone 应指定版本,它复制的这个版本的全部历史信息: 各个分支 git init 数据库 ...
- 跟vczh看实例学编译原理——一:Tinymoe的设计哲学
自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...
- Python的设计哲学探究
在Python shell中输入import this就会在屏幕上打印出来Python的设计哲学,如下: In [25]: import this The Zen of Python, by Tim ...
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- Python的设计哲学
Beautiful is better than ugly. 优美胜于丑陋 Explicit is better than implicit. 明了胜于晦涩 Simple is better than ...
- 第八课:不一样的链表 linux链表设计哲学 5星级教程
这一课最后实现的链表,和普通链表不同,借鉴了linux内核链表的思想,这也是企业使用的链表. 基础介绍: 顺序表的思考 顺序表的最大问题是插入和删除需要移动大量的元素!如何解决?A:在线性表数据元素之 ...
- React的设计哲学 - 简单之美
React最初来自Facebook内部的广告系统项目,项目实施过程中前端开发遇到了巨大挑战,代码变得越来越臃肿且混乱不堪,难以维护.于是痛定思痛,他们决定抛开很多所谓的“最佳实践”,重新思考前端界面的 ...
- Python的设计哲学--zen of Python
Python的设计哲学--zen of Python Beautiful is better than ugly. 优美胜于丑陋 Explicit is better than ...
- 理解numpy中ndarray的内存布局和设计哲学
目录 ndarray是什么 ndarray的设计哲学 ndarray的内存布局 为什么可以这样设计 小结 参考 博客:博客园 | CSDN | blog 本文的主要目的在于理解numpy.ndarra ...
随机推荐
- 2016年中国500强利润率最高的公司,中国500强最赚钱的40家公司,ROE最高的公司
2016年中国500强利润率最高的公司 排名 公司名称 利润率 62 阿里巴巴集团控股有限公司 73.09% 87 百度股份有限公司 50.71% 195 国信证券股份有限公司 47.87% ...
- 使用 HTML5、CSS3 和 MathML 在 EPUB 3 中制作版式丰富的出版物
探索用于高级排版和印刷的新一代开放电子书标准 EPUB 3.0 是最新的行业标准 XML 电子书格式,它采用了 HTML5 和 CSS3,因而融入了现代 Web 技术.它重点关注 XML 驱动的工具包 ...
- Android命名规范(自定义)
此规范参考自android源码,并加以改进,仅供个人使用,如果你觉得还有可取之处,可以参考下,以后有好的规则,再补充 总体规范: 类名要清晰,能反映出这个类的作用,最好能达到见名知义的效果 方法名要使 ...
- tcxtreelist Properties的使用(TcxImageComboBoxProperties)
TcxImageComboBoxProperties(MID_Comp.Properties).Items.Clear; 这样就可以使用属性了. if lstPaper.FocusedNode.Val ...
- UVA 540 Team Queue
思路:使用优先队列,按队伍出现的时刻和自身出现的时刻定义优先级,同时记录此时刻队列里是否有自己队伍的人,一开始没注意,wa了两发. #include<map> #include<qu ...
- 【前端】CSS3实现弹出效果
36氪这个网站上的登录框弹出的时候挺帅气的,想知道它是怎么做的 .. 今天通过问新爷再加上自己琢磨琢磨写出一个小小Demo - 上代码 <!DOCTYPE html> <html&g ...
- HDU4763 - Theme Section(KMP)
题目描述 给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点) 题解 CF原题不解释....http://codeforces.com/probl ...
- repeater中后台动态为控件添加属性
在此贴出repeater中的ItemDataBound事件中的代码: private void ItemDataBound(object sender, RepeaterItemEventArgs e ...
- NSThread常见方法
// CACurrentMediaTime:获取绝对时间:从新世纪到现在的绝对时间,常用来计算耗时操作的时间差(结束时间 - 开始时间) double start = CACurrentMediaTi ...
- ASP.NET MVC- 布署
IIS6.0 1. 安装Microsoft .net FrameWork 4.0安装包; 2. 安装ASP.NET MVC 3; 3. 设置“Web扩展服务”中的“ASP.NET v4.0.0.303 ...