美文网首页
Git使用(以及可用于解决问题的思路)

Git使用(以及可用于解决问题的思路)

作者: 淇漯草 | 来源:发表于2020-04-06 20:57 被阅读0次

1.什么是Git?

1.一个版本控制工具

2.Git中区域分为哪几块?有什么作用?

1.工作区 存储当前工作代码

2.暂存区

3.版本区 所有版本存储的地方

3.在一个文件中,如何实现对文件的管理?

1.所有文件成为git对象,则纳入git的管理范围。

2.将多个对象统一起来,作为树对象。

3.给树对象加上包装,注释、作者,成为提交对象。

4.Git底层命令实现了什么功能?它们的高层表现是怎么样的?

1.Git通过对每一个文件,作一个hash,保存于.git/objects/中,代表数据

具体实现方法:git hash-object filename [-w]             -w代表write,写入数据库,没有则仅返回这个文件的哈希值

注:每一个文件的哈希值不同(只要有任何一点点不同,都会不同)

结果:文件成为git对象,纳入Git的管理范围。
image
2.Git将hash值与filename打包,作为索引,称作index,存入暂存区。(在.git下有index文件)

一方面通过filename对应工作区文件,一方面通过hash值找到该文件。

具体实现方法:git update-index --add --cacheinfo 文件类型[100644] hash值 filename
image
3.当暂存区具有一定量的index以后(随便多少),将索引打包,生成树对象,管理一系列文件

具体实现方法:git write-tree
image
4.给树对象打包,加上信息,成为一个文件包,称作提交对象

具体实现方法:git commit-tree 树的哈希值 -m "注释"
image
注1:由于提交的时间不同,相应提交对象生成每一次并不相同。

注2:此处还不涉及关于暂存区到版本库的高层管理,所以可以多次生成提交对象(但事实上如果相同,并没有意义)

5.这些命令的高层表现

    1+2.git add ./为全部文件 filename为单个文件

    3+4.git commit -m "xxx"

5.Git的分支是什么?为什么凭借分支,能够实现版本控制?

分支是指向提交对象的指针。切换分支即将版本加载到工作区与暂存区

1.所有文件都以git文件形式存储,单个文件的所有版本都具有存储。

2.暂存区将   文件版本hash 与 filename 对应

3.commit对象是一个完整的版本。

4.通过更改分支,可以实现版本控制。

具体实现:git branch 提交对象哈希值 name --->在某个提交对象(版本),创建指针。

注:请按照规范使用分支,否则将造成一些干扰(这种干扰理解的意义不大)

6.Git在这个基础上还有哪些功能?(都是在前面的基础上进行延伸,不再赘述)

Tag:不会动的指针

stash:临时存储当前状态

reset:选择特定版本的特定文件(或者全部)进行重置

注:想要学习Git具体命令,请转至bilibili视频区搜索Git选择合适的视频进行教学。或者学习官方推荐教材《Pro Git》

相关文章

网友评论

      本文标题:Git使用(以及可用于解决问题的思路)

      本文链接:https://www.haomeiwen.com/subject/wzsiphtx.html