Warning: Undefined array key "custom_message" in /www/wwwroot/bbs.aaronyang.cc/wp-content/plugins/wpcopyrights/index.php on line 105

Git 工作区、暂存区和版本库

基本概念

我们先来理解下 Git 工作区、暂存区和版本库概念:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

Git 工作区、暂存区和版本库– 图中左侧为工作区,右侧为版本库。在版本库中标记为 index 的区域是暂存区(stage/index),标记为 master 的是 master 分支所代表的目录树。

  • 图中我们可以看出此时 HEAD 实际是指向 master 分支的一个游标。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  • 图中的 objects 标识的区域为 Git 的对象库,实际位于 .git/objects 目录下,里面包含了创建的各种对象及内容。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • 当执行 git rm –cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行 git checkout . 或者 git checkout — 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
  • 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

若文章对你有帮助,可以点赞或打赏支持我们。发布者:AaronYang会员,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/git-%e5%b7%a5%e4%bd%9c%e5%8c%ba%e3%80%81%e6%9a%82%e5%ad%98%e5%8c%ba%e5%92%8c%e7%89%88%e6%9c%ac%e5%ba%93/

(0)
AaronYang的头像AaronYang会员认证作者
上一篇 2024年 4月 30日 上午8:40
下一篇 2024年 4月 30日 上午8:42

相关推荐

  • xlsfonts

    文章目录xlsfonts补充说明语法选项 xlsfonts 列出X Server使用的字体 补充说明 xlsfonts命令 列出X Server使用的字体,也能使用范本样式仅列出的…

    入门教程 2024年 3月 11日
  • login

    文章目录login补充说明语法选项参数 login 登录系统或切换用户身份 补充说明 login命令 用于给出登录界面,可用于重新登录或者切换用户身份,也可通过它的功能随时更换登入…

    入门教程 2023年 12月 19日
  • Helm 升级

    升级版本 文章目录简介可选项从父命令继承的命令请参阅 简介 该命令将发布升级到新版的chart。 升级参数必须是发布和chart。chart参数可以是:chart引用(&#8216…

    入门教程 2023年 12月 14日
  • resize

    文章目录resize补充说明语法选项实例 resize 命令设置终端机视窗的大小 补充说明 resize命令 命令设置终端机视窗的大小。执行resize指令可设置虚拟终端机的视窗大…

    入门教程 2024年 3月 4日
  • aptitude

    文章目录aptitude补充说明语法选项参数实例 aptitude Debian Linux系统中软件包管理工具 补充说明 aptitude命令 与apt-get命令一样,都是De…

    入门教程 2023年 12月 6日
  • tracepath

    文章目录tracepath补充说明语法参数实例 tracepath 追踪目的主机经过的路由信息 补充说明 tracepath命令 用来追踪并显示报文到达目的主机所经过的路由信息。 …

    入门教程 2024年 3月 11日
  • continue

    文章目录continue概要主要用途参数返回值例子注意 continue 结束本次循环,继续执行下一个for,while或until循环。 概要 continue [n] 主要用途…

    入门教程 2023年 12月 7日
  • 7z

    文章目录7z安装实例help 信息翻译官网 7z 拥有极高压缩比的开源压缩软件。 安装 在 Linux 中输入以下命令安装 7-Zip。 # Ubuntu 系统 apt-get u…

    入门教程 2023年 12月 6日
  • help

    文章目录help补充说明语法选项参数常见问题实例 help 该命令是bash内建命令,用于显示bash内建命令的帮助信息。 补充说明 help命令 help命令只能显示bash内建…

    入门教程 2023年 12月 15日
  • ncftp

    文章目录ncftp补充说明语法选项参数安装实例 ncftp 是增强的的FTP工具 补充说明 ncftp命令 是增强的的ftp工具,比传统的FTP指令更加强大。FTP让用户得以下载存…

    入门教程 2024年 1月 10日
Translate »