工作中经常用git,但是不少命令经常使用出现各种各样的问题,也不太理解其中的原理。今天专门总结一下git的原理,理解原理之后想实现什么样的功能直接找相应的命令即可。如有错误和不足,欢迎指正!
一、 工作区
使用git命令之前首先需要明白git的工作区
版本库:.git目录
工作区:除 .git目录的其他目录和文件
如图所示:git版本库里维护了两个目录树,暂存区目录树和分支目录树(在隐藏的 .git文件中)
更详细一些的四大工作区:
- Workspace: 工作区,就是你平时存放项目代码的地方
- Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
二、GIT 实现版本管理原理
git会将我们的文件和目录转化成一种叫做”git对象”的东西,然后再对这些”git对象”进行管理,从而实现版本管理的目的,这些git对象存放在git的对象库中。
文件————>块(blob)
目录————>树(tree)
状态————>提交(commit)
blob、tree、commit都是gi