Git 工具学习:基础命令与git数据存储结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuanjw2014/article/details/82112767

基础命令

git status
git init
git add
git commit

存储结构

基本概念

1.工作目录(work directory)

工作目录也就是代码所在的项目目录,对应着我们当前的编辑状态,所有的临时修改都反映在工作目录中。

2.缓存区(staging area /index file)

git 的缓存区存储了某些改动后的项目目录状态,这里某些改动并不是上次提交后工作目录的所有变动,而是使用git add指定的改动;index文件反映了缓存区存储的目录状态

使用git ls-files命令查看index,列出了工作目录中的所有文件及其sha1编码,截取部分
这里写图片描述
ToDo.txt内容如下
这里写图片描述
修改一下
这里写图片描述
执行git add app/ToDo.txt,再次执行git ls-files,可见只有ToDo.txt对应的sha1编码发生了变化,也就是index反映了git add造成的变化,实际上git add添加文件,修改文件会使git生成对应的存储对象
这里写图片描述

3.commit

commit提交是把一次修改正式记录到git数据库的存储记录里,会根据缓存区的文件及编码组织成目录结构的快照,tree object标示目录层级结构,blob object存储文件对象

使用git log命令可以查看commit 历史
这里写图片描述

一次提交记录了对应的目录状态快照和上次提交

这里写图片描述
图中可以看出 地点图标这次提交的parent与上一次提交的commit编码是一致的

tree object
blob object

branch

多次提交可以形成一个提交链,从最近一次提交回溯到第一次提交,这就构成了一个分支;由于分支链是单向的,在一个提交点可以分叉形成多个分支;分支的新建和合并是git使用的核心;分支间的切换是通过refs来实现的

使用 git branch 可以查看分支
这里写图片描述

创建分支可以使用git branch +分支名 或者 git checkout -b +分支名

refs

只要保存每个分支的最近一次提交就能回溯整个分支,也就是一个分支的最近一条提交记录就能标示一条分支,refs就记录了每各分支的最近一次提交

下面是在master上新拉了两个分支后的.git目录这里写图片描述
dev master文件都记录了最近一次提交的编号,在master上做一次提交
这里写图片描述

master文件内容变成最新提交的编号
这里写图片描述
HEAD
在多个分支间切换就像一个单刀多掷开关,HEAD就如同单刀,指向哪个refs就会切到那个分支
这里写图片描述

HEAD文件存储了当前分支的refs文件位置

猜你喜欢

转载自blog.csdn.net/yuanjw2014/article/details/82112767
Git