美文网首页
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