理解 Git
Git的学习曲线和难度相对较高,理解内部的原理和一些核心概念对使用git帮助极大
Git学习的难度在哪里?
命令多:tab键一个就200多个,选项更多
一个命令多种用途:add命令
- 跟踪文件
- 添加到暂存区
- 修改冲突文件后,用add来标记这个冲突已经解决
有些命令是组合命令:一个命令可以包含多个命令(隐藏操作)
如果不明白原理,可以文档都看不懂:git help push
认识Git仓库.git目录
Git的工作模型?
- Untrack -- Unmodified -- Modified -- Staged
https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository
https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell
git中的三大对象objects
- commit object:保存提交信息(项目快照,时间,作者,备注)
- tree object:目录
- blob:文件
Git中的HEAD指的是什么?
- 文件存储位置./.git/HEAD(linux:一切皆文件)
- 指向的是分支,而分支是指向当前分支的最后一个commit
- 代表当前工作目录中的文件是基于哪个commit的
Git保存的是文件的修改还是文件的全部内容?
保存文件的全部内容
Git是如何管理存储文件的?
对文件内容进行hash,用于目录和文件名,内容进行二进制缩,存储在.git/objecs目录下
Git新建分支为什么非常的快?
它不需要拷贝当前项目的所有文件,它只需要基于commit新建几个文件
Git中隐藏的操作
- gc打包
- zlib压缩
hash-object
References: