Git 核心概念:工作区与暂缓区(添加提交及查看状态充分体现)
前言
首先,我们要先知道什么是 工作区(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 add
把 test.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 核心概念:工作区与暂缓区(添加提交及查看状态充分体现)相关推荐
- 沐阳Git笔记02Git工作区与缓存区
02 Git工作区与缓存区 1.Linux删除文件夹 rm -rf 目录名字 2.ls查不到隐藏文件 ls -a 3.Linux拷贝文件夹到当前目录 cp -r 目录名字 . 4.查看工作目录和暂存区 ...
- git 将暂存区文件提交_git文件状态,暂存与提交
git中文件的状态有两种:已跟踪或者未跟踪. 从现有目录中创建git仓库 git init git仓库(repository),也叫做版本库.使用git的目的是管理项目,并且保存一些随时间变化的文件. ...
- Git使用汇总之暂存区工作区撤销和删除
一.撤掉 1.如果还没 git add file ,使用该指令进行撤销: git checkout -- fileName 只能清空全部已修改的问题件, 但是对于新建的文件和文件夹无法清空, 必须组 ...
- git使用回滚,清除暂缓区,解决冲突(持续更新)
1.git restore --staged <文件> 清除暂缓区文件名 2.git reset --hard <版本号> 回滚到上一版本 如看PHPstrom如何操作请参考h ...
- Vuex是干什么的?以及核心概念
Vuex是干什么的?以及核心概念 Vuex是专门为Vue.js设计的状态管理模式.它采用集中式储存管理Vue应用中所有组件的状态 Vuex的核心概念: . State --> 数据源存放地 ,类 ...
- Git——三大分区【工作区 / 暂存区 / 版本区】
前言:Git作为一个版本管理工具,最核心组成思想是它的三个分区:工作区.暂存区和工作区. 1. 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹. 2. 暂存区 暂存区就是一个暂时放置 ...
- c# 添加中文描述 给enum_理解C# 核心概念 – C# 程序集本地化
在之前几讲中,老白给大家介绍了C#中module和Assembly的生成和使用.在这一篇中,老白将更加深入的介绍下Assembly其中的一个知识点--本地化(Localization). 什么是本地化 ...
- git之工作区、版本区、远程仓库之间相互操作
工作区.版本区.远程仓库之间相互操作示意图 工作区: IDE操作源码的⽬录. 版本库 版本库⼜名仓库,英⽂名repository. 这个⽬录⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改.删除, ...
- git基本概念与核心命令_Git:了解核心版本控制概念的初学者指南
git基本概念与核心命令 Git is a vital tool in the toolbelt of any developer. Git是任何开发人员的重要工具. For example, jus ...
最新文章
- 掷骰子python代码_Python 使用matplotlib模块模拟掷骰子
- GUID和自增ID的比较_delete
- php 许愿墙 阶段案例_房地产全周期设计管控流程解析及跨部门合作及案例分析...
- python编程语言好学吗-转行零基础该如何学习python?很庆幸,三年前的我选对了...
- PHP中file_put_contents()函数的兼容性问题
- 分布式是写出来的(六)
- 火星人(洛谷-P1088)
- TMS320VC5509片内ADC采集
- MyBatis映射器出错,已解决(Multiple annotations found at this line:)
- 图解 | 深入揭秘 epoll 是如何实现 IO 多路复用的!
- Office 如何打印A4不干胶标签纸
- 德州大学计算机系郭小虎2021,2021年德州农工大学排名U.S.News世界大学排名第130...
- win10修改ntp服务器地址,修改win10 ntp服务器地址
- SQL39 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
- 学习笔记:Eclipse IDE for javaEE 64位下载安装
- 一文读懂Lybra Finance:LSD赛道新稳定币协议
- oracle有sysdata,Oracle入门知识 - osc_r8q2esik的个人空间 - OSCHINA - 中文开源技术交流社区...
- homepod换wifi网络_苹果HomePod音响,怎么更换无线wifi网络?
- 使用k8s搭建一个https的wordpress无坑版
- 马云给年轻人的人生规划课--梦想还是要有的,万一实现了呢