Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。

先来看名词解释。
工作区(Working Directory)
就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
分支和HEAD的概念我们以后再讲。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
俗话说,实践出真知。现在,我们再练习一遍,先对readme.txt做个修改,比如加上一行内容:
Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage.
然后,在工作区新增一个LICENSE文本文件(内容随便写)。
先用git status查看一下状态:
$ 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: readme.txt # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # LICENSE no changes added to commit (use "git add" and/or "git commit -a")
Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。
现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: LICENSE # modified: readme.txt #
现在,暂存区的状态就变成这样了:
所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
$ git commit -m "understand how stage works" [master 27c9860] understand how stage works 2 files changed, 675 insertions(+) create mode 100644 LICENSE
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:
$ git status # On branch master nothing to commit (working directory clean)
现在版本库变成了这样,暂存区就没有任何内容了:
小结
暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。
# git
# 暂存区
# 工作区
# 暂存区与工作区
# 暂存区和工作区
# Git 命令使用技巧提供工作效率
# Git 教程之工作区、暂存区和版本库详解
# Git 教程之工作流程详解
# Git工作流演示及三种工作方式
# 库里
# 明白了
# 你可以
# 第一个
# 是有
# 最重要
# 你在
# 两次
# 一遍
# 就没
# 从来没有
# 做个
# 告诉我们
# 你又
# 非常重要
# 讲了
# 唯一一
# 先用
# 所有内容
# 第二步
相关文章:
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
焦点电影公司作品,电影焦点结局是什么?
如何在万网自助建站中设置域名及备案?
网站制作的步骤包括,正确网址格式怎么写?
建站之星在线客服如何快速接入解答?
非常酷的网站设计制作软件,酷培ai教育官方网站?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何正确选择百度移动适配建站域名?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
三星网站视频制作教程下载,三星w23网页如何全屏?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
如何在云虚拟主机上快速搭建个人网站?
如何注册花生壳免费域名并搭建个人网站?
如何通过云梦建站系统实现SEO快速优化?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何在阿里云通过域名搭建网站?
建站之星安装需要哪些步骤及注意事项?
建站主机核心功能解析:服务器选择与网站搭建流程指南
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
开封网站制作公司,网络用语开封是什么意思?
代刷网站制作软件,别人代刷火车票靠谱吗?
建站之星2.7模板快速切换与批量管理功能操作指南
建站主机如何安装配置?新手必看操作指南
,sp开头的版面叫什么?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
建站主机解析:虚拟主机配置与服务器选择指南
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
高性价比服务器租赁——企业级配置与24小时运维服务
python的本地网站制作,如何创建本地站点?
企业微网站怎么做,公司网站和公众号有什么区别?
如何破解联通资金短缺导致的基站建设难题?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
如何高效配置IIS服务器搭建网站?
C++如何使用std::optional?(处理可选值)
网站专业制作公司有哪些,做一个公司网站要多少钱?
深入理解Android中的xmlns:tools属性
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
建设网站制作价格,怎样建立自己的公司网站?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
建站之星如何通过成品分离优化网站效率?
网站制作模板下载什么软件,ppt模板免费下载网站?
临沂网站制作企业,临沂第三中学官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。