Git的三个工作区和文件的三种状态

作者: AntDream | 来源:发表于2019-07-04 20:39 被阅读5次

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

我们在使用Git的时候一般有3个工作区的概念:Git 仓库、工作目录以及暂存区域。其中工作目录比较好理解,就是我们开发时修改文件的那些目录,Git 仓库就是我们项目目录下面的 .git目录中的内容,而暂存区域是保存已经被Git标记过,将要提交保存到Git数据库中的文件的地方

文件从我们创建到编辑完提交Git帮我们记录,一共要经历3种状态:已修改(modified)、 已暂存(staged)已提交(committed)

  • 刚刚开始时编辑文件,这个时候文件是处于 已修改(modified) 状态,文件是在工作目录

  • 修改完文件,我们执行git add,这个时候文件就变为 已暂存(staged)状态,文件信息进入暂存区域,内容被保存到Git数据库中

  • 然后我们执行git commit,文件就变为已提交(committed)状态,创建了一个提交记录保存到了Git 仓库

具体过程可以参见下图

暂存区域

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。对应于 index文件 中的内容。
这里需要特别注意暂存区里保存的内容,我们可以通过 git ls-files --stage 命令来查看下里面的内容

git ls-files --stage
//输出
100644 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 0   text.txt
100644 83baae61804e65cc73a7201a7252750c76066a30 0   bak/test.txt

可以看到,暂存区里记录了文件的内容所对应的数据对象,以及文件的路径(文件名和文件所在目录)。实际上,暂存区保存的是一系列指向文件的索引,真正的文件内容都在 .git/objects 目录下,也就是Git数据库中。

考虑2种情况:

情况一:如果此时,我们修改 text.txt 文件,然后重新 add 进暂存区,那暂存区会怎么变化?

实际上,暂存区还是只有2条索引,只不过指向 text.txt 文件的索引变成了新的(这个时候 .git/objects 目录下会多出一条记录,记录text.txt 文件的新版本)

情况二:如果此时,我们删除一条记录,比如text.txt 文件的索引记录,会有什么影响?

首先 .git/objects 目录下对应的那条数据并不会被删除,这也就是开头说的 你执行的 Git 操作,几乎只往 Git 数据库中增加数据 ,不会删除数据。

暂存区text.txt 文件的索引会被删除,text.txt 文件就会重新变为待 add 状态,此时如果我们执行 commit 操作,提交的内容将不会包含text.txt 文件


                         欢迎关注我的公众号查看更多精彩文章!
AntDream

相关文章

  • git gitflow gitlab 上手指南

    git git三种状态 工作区 添加的文件 未使用git add前十在工作区 暂存区 git add 后会放入...

  • git总结

    git 中文件有三种状态:ignoretrackeduntracked文件有三个位置:工作目录暂存区仓库中 pus...

  • Git相关使用

    一、git中的三个区 : 工作区、暂存区、Git仓库 二、git中的三种状态 : 已修改 (modified):...

  • Git入门

    三种状态 文件三种状态:已提交、已修改、已暂存三个工作区域:Git仓库、工作目录、暂存区域 Git仓库目录是Git...

  • Git基础使用

    git基本命令 查看当前文件的状态:git status 从工作区提交到暂存区:git add 文件名 将暂存区的...

  • Git的简单使用

    git 状态、名词 git有三种状态和三个工作区域: 已提交(committed):已提交表示数据已经安全的保存在...

  • git和码云

    git的三个区 1.工作区工作区则是本地写代码的文件夹,即.git所在的文件夹 2.暂存区文件暂存的位置,作为过渡...

  • Git的三个工作区和文件的三种状态

    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一...

  • git命令

    git有三个区域,工作区,暂存区和版本库。修改的时候是在工作区,工作区的文件添加到暂存区,暂存区的文件再提交到版本...

  • (一)Git--版本回退

    状态管理 1. 掌握工作区的状态 修改过文件后,运行git status命令查看当前仓库状态如果git显示文件被修...

网友评论

    本文标题:Git的三个工作区和文件的三种状态

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