Skip to content
Published at:

理解 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:

Updated at: