当前位置:   article > 正文

git:理解工作区,暂存区和本地仓库

git:理解工作区,暂存区和本地仓库

引言

为了理解指令 git ls-files ,学习了 git 的三大概念:工作区,暂存区 和本地仓库。当理解这三个概念以后,建议去学习一下git:文件存储方式,它告诉了我们在上述三个阶段中,项目文件是以什么格式被存储,文件格式之间的关联,以及版本切换和分支切换的底层原理。


工作区:work-tree

就是你本地的工作目录,git 相关的文件全部保存在 .git 目录下。

暂存区:index / staging area / cache

当运行指令 git add 时,git 将需要跟踪的文件(不包括目录信息)复制并压缩成 blob 对象进行保存。当对同一个文件进行修改后,执行 add 指令会生成一个新的 blob。只有工作区和本地仓库也能进行版本管理(例如 Mercurial),git 引入 index 的目的是为了缓解 merge 冲突,这里暂不讨论。

本地仓库:repository

repository(repo)由 commits ,tree 和 blob 组成。当 commit 用作名词时,指 git 版本历史中的某一个版本;用作指令时,指生成当前版本的 commit,tree,并联合 index 中的 blob 一起保存到 repo 中,同时将 branch 指向最新的 commit(HEAD 指向当前的 branch,branch 指向 commit)。tree 保存的是其下 blob 和 tree 的地址,多个 tree 一起保存了整个版本的目录结构;commit 保存了一个 tree 和描述该版本的信息,该 tree 指向整个版本目录。
执行 commit 指令以后,index 会被清空。可以简单认为每一个 commit 都是独立永恒的。


其他

commit,tree,blob 是 git 下的格式,只能读取不能修改,当通过 commit 查找恢复历史版本时,这些对象才会被转化成可以使用的格式。

参考

What does “git ls-files” do exactly and how do we remove a file from it?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/469174
推荐阅读
相关标签
  

闽ICP备14008679号