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

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》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载自:http://www.open-open.com/lib/view/open1414396787325.h...
    Bbooo阅读 3,440评论 0 3
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN...
    JSXL阅读 5,823评论 0 2
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集...
    毛子阿卡西阅读 1,832评论 0 1
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集...
    傲慢二锅头阅读 3,280评论 0 0
  • 四、 分支开发工作流 现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢? 在本节,我们会介绍一些常...
    常大鹏阅读 6,488评论 3 24

友情链接更多精彩内容