前言

首先,我们要先知道什么是 工作区(Working Directory) 和 暂缓区(Postponed Zone)。

工作区(Working Directory):

顾名思义,工作的地区。我们电脑中每个项目目录就是一个工作区。

暂缓区(Postponed Zone):

暂缓区在哪里?我们工作区中 .git 这个隐藏目录就是我们的暂缓区

Git 和其他版本控制系统(SVN)不同之处就是有暂存区的概念。不权威的说,暂缓区就是一个我们常说的 Git 版本库或 Git 仓库。Git 的版本库里存了很多东西,其中最重要的就是称为 stage 的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针 HEAD

添加提交(充分体现核心概念)

回顾一下过程:工作区 >>>> 暂存区 >>>> 仓库

当我新建 Git 版本库时,Git 自动创建了 master 分支。当我 git commit 时肯定往 master 分支上提交的更改,这毫无疑问。

一、在工作区中新建一个 test.txt 文件,紧接着 git status 查看状态:

$ touch test.txt
$ git status
On branch master
nothing to commit, working tree clean

从结果来看,第一行 On branch master 提示我们处于哪个分支,目前处于 master。第二行 nothing to commit, working tree clean 表示我们目前没有任何的提交操作。

二、在 test.txt 文件中新增一段内容,紧接着 git status 查看状态:

$ vim test.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")

从结果来看,第一句还是提示我们处在哪个分支。第二行表示我们已经有了操作,第五行已经给出提示,而这个操作就发生在 test.txt 文件,最后一行提示 我们 没有要添加提交的更改,Git 一直监视这工作区文件的修改,接下来我们添加提交。

三、将 test.txt 添加提交到暂缓区,紧接着 git status 查看状态:

$ git add test.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)modified: test.txt

从结果来看,modified:test.txt 从红色变为绿色字体,这表示改动的文件已经放入暂缓区,此时文件是 “安全” 的,下图表示了 test.txt 文件的所在位置:

在暂缓区中,test.txt 能被拿出来吗?能!

四、从暂缓区中移除 test.txt 文件,紧接着 git status 查看状态:

$ git rm --cached test.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)deleted: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)test.txt

从结果上不难看出,test.txt 文件已被 Git 列为不跟踪的文件了。

五、把暂缓区的所有文件提交到当前分支 master

注意,如果你是跟着本文一步步做的,那么执行以下命令前,先执行 git addtest.txt 添加到暂存区,因为第四步我们给从暂缓区移除了。

$ git commit -m "This is a demo!"
[master d5cbf24] This is a demo!1 file changed, 1 insertion(+)

从结果可以看到,Git 完成了提交,并提示我们一些信息。

此时 test.txt 就跑到了 master 分支:

以上便是 工作区 >>>> 暂存区 >>>> 仓库 整个过程。

注意事项

每次 git commit 提交后,你又没有对工作区做任何修改的话,此时暂缓区是 干净 的:

$ git status
On branch master
nothing to commit, working tree clean

也就是这个样子:

写在后面

以下简单明了的分析来自 九只蜗牛Leo 分享:

Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
git diff查看工作区和暂存区差异,
git diff --cached查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区。

Git 核心概念:工作区与暂缓区(添加提交及查看状态充分体现)相关推荐

  1. 沐阳Git笔记02Git工作区与缓存区

    02 Git工作区与缓存区 1.Linux删除文件夹 rm -rf 目录名字 2.ls查不到隐藏文件 ls -a 3.Linux拷贝文件夹到当前目录 cp -r 目录名字 . 4.查看工作目录和暂存区 ...

  2. git 将暂存区文件提交_git文件状态,暂存与提交

    git中文件的状态有两种:已跟踪或者未跟踪. 从现有目录中创建git仓库 git init git仓库(repository),也叫做版本库.使用git的目的是管理项目,并且保存一些随时间变化的文件. ...

  3. Git使用汇总之暂存区工作区撤销和删除

    一.撤掉 1.如果还没 git add file ,使用该指令进行撤销:  git checkout -- fileName 只能清空全部已修改的问题件, 但是对于新建的文件和文件夹无法清空, 必须组 ...

  4. git使用回滚,清除暂缓区,解决冲突(持续更新)

    1.git restore --staged <文件> 清除暂缓区文件名 2.git reset --hard <版本号> 回滚到上一版本 如看PHPstrom如何操作请参考h ...

  5. Vuex是干什么的?以及核心概念

    Vuex是干什么的?以及核心概念 Vuex是专门为Vue.js设计的状态管理模式.它采用集中式储存管理Vue应用中所有组件的状态 Vuex的核心概念: . State --> 数据源存放地 ,类 ...

  6. Git——三大分区【工作区 / 暂存区 / 版本区】

    前言:Git作为一个版本管理工具,最核心组成思想是它的三个分区:工作区.暂存区和工作区. 1. 工作区   Git的工作区也就是我们平时编辑代码的目录文件夹. 2. 暂存区   暂存区就是一个暂时放置 ...

  7. c# 添加中文描述 给enum_理解C# 核心概念 – C# 程序集本地化

    在之前几讲中,老白给大家介绍了C#中module和Assembly的生成和使用.在这一篇中,老白将更加深入的介绍下Assembly其中的一个知识点--本地化(Localization). 什么是本地化 ...

  8. git之工作区、版本区、远程仓库之间相互操作

    工作区.版本区.远程仓库之间相互操作示意图 工作区: IDE操作源码的⽬录. 版本库 版本库⼜名仓库,英⽂名repository. 这个⽬录⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改.删除, ...

  9. git基本概念与核心命令_Git:了解核心版本控制概念的初学者指南

    git基本概念与核心命令 Git is a vital tool in the toolbelt of any developer. Git是任何开发人员的重要工具. For example, jus ...

最新文章

  1. 掷骰子python代码_Python 使用matplotlib模块模拟掷骰子
  2. GUID和自增ID的比较_delete
  3. php 许愿墙 阶段案例_房地产全周期设计管控流程解析及跨部门合作及案例分析...
  4. python编程语言好学吗-转行零基础该如何学习python?很庆幸,三年前的我选对了...
  5. PHP中file_put_contents()函数的兼容性问题
  6. 分布式是写出来的(六)
  7. 火星人(洛谷-P1088)
  8. TMS320VC5509片内ADC采集
  9. MyBatis映射器出错,已解决(Multiple annotations found at this line:)
  10. 图解 | 深入揭秘 epoll 是如何实现 IO 多路复用的!
  11. Office 如何打印A4不干胶标签纸
  12. 德州大学计算机系郭小虎2021,2021年德州农工大学排名U.S.News世界大学排名第130...
  13. win10修改ntp服务器地址,修改win10 ntp服务器地址
  14. SQL39 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
  15. 学习笔记:Eclipse IDE for javaEE 64位下载安装
  16. 一文读懂Lybra Finance:LSD赛道新稳定币协议
  17. oracle有sysdata,Oracle入门知识 - osc_r8q2esik的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. homepod换wifi网络_苹果HomePod音响,怎么更换无线wifi网络?
  19. 使用k8s搭建一个https的wordpress无坑版
  20. 马云给年轻人的人生规划课--梦想还是要有的,万一实现了呢

热门文章

  1. 高纯度高活性艾美捷人重组MEGACD40L蛋白(可溶性)
  2. 标准10进制公制度量系统单位换算
  3. android开发手顺3--Package name must have at least two identifiers 原因及解决方法
  4. 720°VR全景网站制作
  5. office 宏病毒分析
  6. 医院影像服务器系统,锐潮医学影像管理系统(PACS)
  7. 电影院传出的哭声《比悲伤更悲伤的故事》程序员们怎么看?
  8. BT06串口蓝牙模块的配置以及与电脑的配对
  9. 【094】统计大写字母个数
  10. Windows开机小键盘灯不亮不能用