`
cakin24
  • 浏览: 1392056 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

阅读更多

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

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

暂存区和版本区的目录结构如下图:


 

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



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

图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

1.当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。index同步工作区

2.当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。master同步index

3.当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。index同步master

4.当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。

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

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

 

  • 大小: 12.6 KB
  • 大小: 115.3 KB
1
0
分享到:
评论

相关推荐

    caojx-git#learn-java-notes#3_git工作区暂存区和版本库1

    常见的操作当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象

    Git 教程之工作区、暂存区和版本库详解

    以上对Git工作区、暂存区以及版本库的详细介绍,对于初学者来说是理解Git操作的基础。掌握这些概念有助于更好地管理版本和团队协作。在使用Git进行版本控制时,理解这些概念可以帮助开发者准确地进行代码管理,避免...

    git的工作区和暂存区

    git工作区和暂存区 工作区 缓存区 工作区和缓存区的相互作用 查看当前工作区的状态 工作区 说明: 工作区的概念比较简单。就是工作的目录所在的位置就是工作区。 如我们之前创建的git_text就是一个工作区。 版本库/...

    Git 工作流程及常用术语(工作区、暂存区、版本库、回滚,分支等)、常用操作

    Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    Git 版本控制管理器 操作文档 git api

    接下来,使用`git commit -m "你的提交信息"`来提交暂存区的内容到版本库,这会保存当前的文件状态。记住,`git status`命令可以用来查看当前的工作区状态,确认文件是否已添加到暂存区。 随着时间的推移,你可能...

    git reset 的三个参数.pdf

    3. **--hard**:最后,`git reset --hard`到版本5,所有工作区和暂存区的变更都将丢失,工作区和本地库将与版本5完全一致,显示为没有待提交的变更,且6.c和7.c不存在。 通过这些操作,我们可以清楚地了解`git ...

    GIT版本库操作手册及管理规范.zip

    - **查看状态(Status)**:`git status` 查看当前工作区和暂存区的状态。 - **提交(Commit)**:`git commit -m "commit message"` 将暂存区的更改保存到版本库。 - **推送(Push)**:`git push origin master...

    git.docx个人自学笔记

    * Git 有三个主要区域:工作区(Working Directory)、暂存区(Staging Area)和版本库(Repository)。 * 工作区是指当前目录下的文件夹,暂存区是 Git 用来追踪文件变化的区域,版本库是 Git 管理文件的仓库。 二...

    git工作区和暂存区_动力节点Java学院整理

    `git status`命令用于查看当前工作区和版本库的状态,包括哪些文件被修改、哪些文件未被跟踪(Untracked files)、哪些文件已添加到暂存区等待提交等。 6. **文件状态** - **修改(Modified)**:文件在工作区被...

    Git工作原理.docx

    Git 工作原理是 Git 操作的核心部分,它将被改写的文件保存为数据对象,更新暂存区,记录树对象,最后创建一个指明了顶层树对象和父提交的提交对象。下面是 Git 工作原理的详细解释: 一、 Git 工作原理的核心组成...

    关于git的手册总结简单的git介绍,git的相关指令

    首先,Git有三个主要工作区域:工作区、暂存区(stage 或 index)和版本库。工作区是你在计算机上看到的目录,存放着你的文件和项目内容。暂存区则是Git用来存储即将提交更改的地方,通常位于`.git`目录下的`index`...

    git版本分支管理

    Git的主要组件包括工作区、暂存区和版本库。工作区是开发者当前正在编写代码的目录,暂存区是暂存已经修改的文件,版本库是Git存储所有版本记录的地方。 在使用Git时,我们通常会创建多个分支,例如,master分支、...

    git版本库管理.doc

    5. **暂存区与HEAD**:Git版本库包含暂存区(stage或index)和默认分支master,HEAD指针指向当前分支(默认是master)。暂存区用于暂存待提交的更改。 6. **撤销修改**:若要丢弃工作区的修改,可以使用`git ...

    Git仓库安装文件

    - **查看状态**:`git status`可以显示工作目录和暂存区的状态。 - **推送更改**:`git push origin &lt;branch&gt;`将本地分支的更改推送到远程仓库的指定分支。 此外,Git还支持分支管理、合并、重置、拉取等功能,是...

    git版本管理软件

    - **作用**:查看工作区和暂存区之间的差异。 **4.3 git提交代码** - **4.3.1 添加文件或文件夹** - **命令**:`git add |folder|-A|--all&gt;` - **作用**:将文件或文件夹添加到暂存区。 - **4.3.2 提交暂存区的...

    git官网口袋最新版本

    Git的核心概念包括工作区、暂存区(Stage)和版本库(Repository)。工作区是用户进行编辑和修改的地方,暂存区用于临时保存改动,而版本库则存储所有提交的历史记录。通过`git add`将工作区的改动添加到暂存区,`...

    学习git和gitbash使用的一些详细操作

    - 查看状态:`git status`显示当前工作区和暂存区的状态,是否有文件被修改或新添加。 - 查看差异:`git diff`用于查看工作区中的内容和暂存区中的内容的差异。 - 版本回退:`git reset --hard &lt;commit-id&gt;`命令用来...

    mplab中git的用法.pdf

    版本库、暂存区和工作区构成了git的工作流程的三个主要区域。开发者在工作区对文件进行修改,然后使用Add命令将其添加到暂存区。一旦暂存区中的更改被提交,它们就进入了版本库。利用特定的命令或图形界面,开发者...

Global site tag (gtag.js) - Google Analytics