首页 > 其他分享 >Git 工作区、暂存区和版本库

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

时间:2022-10-25 18:36:16浏览次数:60  
标签:git 暂存区 Git master 版本 目录

 

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


基本概念

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

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .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 <file> 命令时,会直接从暂存区删除文件,工作区则不做出改变。

  • 当执行 git checkout . 或者 git checkout -- <file> 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • 当执行 git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

标签:git,暂存区,Git,master,版本,目录
From: https://www.cnblogs.com/whoknows1/p/16825865.html

相关文章

  • git日常工作常用的命令行指令-雷jf
    1.git撤销提交gitreset--hardHEAD^//多次提交执行多次gitpushoriginmaster--force//强制将当前点提交的master分支gitreset--softHEAD^//撤销addgitr......
  • git合并分支时出现“Please enter a commit message to explain why this merge is ne
    1,有的时候我们在进行项目分支合并gitmerge时会出现如下错误  解决步骤:按键盘上的“i”键可进入插入模式这时可以修改最上方的黄色部分,改成你想写的合并原因按......
  • linux 多个php版本切换环境默认版本
    原版本为php7.2.18#找到php的位置whereisphp#删除默认版本rm-rf/usr/bin/php#创建软连接ln-sf/usr/local/php74/bin/php/usr/bin/php#查看php-v ......
  • IOS 15提示“此App的开发者需要更新APP以在此IOS版本上正常工作”解决办法
    参考:https://baijiahao.baidu.com/s?id=1702628997796836559&wfr=spider&for=pc随着iOS隐私协议更新以及iOS14.6系统正式放开,很多已经安装的app在升级到iOS14.6或者iOS15......
  • git 版本回退
    git回退到指定版本步骤:把你想回退的版本的commitid和最新版本的commitid记下来然后用命令gitreset--hard老版本的commitid再gitreset--mix最新版本的commit......
  • 搭建github个人博客——记录
    目的看到网上许多人的都在搭建自己在gayhub上面的花里胡哨的blog,兴致来了,摸鱼不如自己搭一个这个!过程在跟着一个教程,是通过git+node+(里面的hexo)。baby级教程到了其......
  • 快速自建gitlab和gitlab-ci容器版
    文档说明:只是记录关键点自建gitlabversion:"3"services:gitlab-ce:image:gitlab/gitlab-ce:15.5.1-ce.0#指定版本比较好#image:git......
  • 常用git插件
    Chinese(Simplified)(简体中文)LanguagePackforVisualStudioCodeGitHistoryGitLensImagepreviewNGA-MoFishPowerModeQQTailwindCSSIntelliSenseuni-......
  • git仓库拷贝之后出现大量Modiy状态文件
    git仓库拷贝之后出现大量Modiy状态文件且无法重置,可使用下面一套组合拳RemoveeveryfilefromGit'sindex.gitrm--cached-r.RewritetheGitindextopickupa......
  • 通过Nvm修改node版本
     之前用的node版本是16.16.0,可能是node版本太高了,搞定不了两年前的项目,只能用和插件适应的14.版本。   先说一下大体的思路:  1、卸载原本的nodejs  2、......