You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

33 lines
2.0 KiB

---
title: 对git暂存区(index)的理解
date: 2021-07-08 21:42:48
updated: 2021-07-14 10:23:14
tags:
categories:
keywords:
description:
top_img:
comments:
cover:
toc:
toc_number:
toc_style_simple:
copyright:
copyright_author:
copyright_author_href:
copyright_url:
copyright_info:
katex: true
highlight_shrink:
aside:
---
VCS(version control system)。
在git中,对文件的一些修改(**新增文件,删除文件,修改文件**)涉及到三个区域:工作区(project),暂存区(project/.git/index),本地仓库(project/.git/objects)。
![对git暂存区(index)的理解.md-fig-0.png](https://imgs-1302910354.cos.ap-shanghai.myqcloud.com/images/对git暂存区(index)的理解.md-fig-0.png)
在实际的操作中, 我们处理的就是我们的工作目录, 这个目录是存在于我们电脑的文件系统上的.所有的修改都会保留在工作目录直到我们把它们加入到暂存区(通过git add命令)。
暂存区这是对下一次提交最好的表示方式,当我们执行git commit,git会获取暂存区中的修改,并将这些修改作为下一次的提交内容.**暂存区的一个实际作用就是允许你调整你的提交**,**你可以向暂存区新增和删除修改直到你对你下一次的提交满意**,这个时候你就可以用git commit提交你的内容了。
在提交修改后,它们就会进入.git/objects目录,在其中被保存为commit,blob以及tree objects,(参考[数据模型](https://segmentfault.com/a/1190000037783272)那一篇文章)
把暂存区认为是一个存储修改的真实区域并不准确,git没有专门的stage目录来存放这些文件的修改(blobs),git有一个名为index的文件来跟踪这三个区域的修改:工作目录,暂存区以及本地仓库。
当我们添加修改到暂存区的时候,git会更新index文件中的信息,并且创建一个新的blob object,然后将它们放到与之前提交的记录所产生的其他blob相同的.git/objects目录中。