Git中三种文件状态及其转换

Stella981
• 阅读 548

Git作为一种版本控制解决方案,由于其具有的分布式特性,正被越来越多的用户熟知,一些有名的开源项目,如:Linux kernel,CakePHP,Ruby on Rails等,都在使用Git进行版本管理。

在Git中,文件状态是一个非常重要的概念,不同的状态对应不同的操作。因此,要想熟练掌握Git的用法,需要了解Git的几种文件状态。

为了说明的方便,现在初始化一个项目,也就是将项目所在目录纳入Git的管理之下。假设项目目录为hello_world,初始化之后,在目录下新建README.txt文件,接着,使用“git status”查看文件状态,如图:

Git中三种文件状态及其转换

可以看到,Git友好的标示出README.txt为“Untracked files”,并且提示使用“git add ...”的命令将文件包含到待提交清单中。按照提示,使用“git add README.txt”命令,然后,使用“git status”查看文件状态,如图:

Git中三种文件状态及其转换

文件README.txt状态变成了“Changes to be committed”,也就是说README.txt在暂存区域生成了快照,等待被提交。正如Git所提示的那样,通过“git rm --cached README.txt”命令,可以将文件状态还原为未暂存状态,即回到“Untracked files”文件状态。现在,README.txt已经可以被提交到git目录中了,但是暂时不提交。打开README.txt,向其中加些内容,保存之后,用“git status”查看,返回如图信息:

Git中三种文件状态及其转换

可以看到,除了之前的“Changes to be committed”状态,现在又多了一条“Changes not staged for commit”状态,表明文件已经修改,但是还没有放入暂存区域,也就是没生成快照。如果现在进行commit操作,只是将修改之前的文件快照提交到了git目录,一定记住:只有暂存区域的文件(即:文件状态为“Changes to be committed”)才会被提交。正如提示,通过“git add README.txt”命令将已修改文件更新到暂存区域中,如果想撤销修改,可以使用“git checkout -- README.txt”命令。

正如上文所说,Git在未进行commit操作之前,存在三种状态:Untracked files,Changes not staged for commit及Changes to be committed,每种状态之间可以随意进行互相转换。了解这三种状态各自所对应的不同情况,能够帮助你方便有效的使用Git来管理项目。

点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
GitLab 安装配置指南
GitLab在CentOS7系统上的安装配置指南1、简单介绍GitLab是利用RubyonRails开发的一个开源版本管理系统,实现一个自托管的Git管理仓库,可通过Web界面进行访问、管理控制权限。Git的家族成员介绍Git:是一种开源分布式的版本控制系统,是一个命令,是一种工具。是伟大的程
Stella981 Stella981
3年前
Git客户端图文详解如何安装配置GitHub操作流程攻略
Git介绍分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具;保存点:Git的保存点可以追踪源码中的文件,并能得到某一个时间点上的整个工程项目额状态;可以在该保存点将多人提交的源码合并,也可以会退到某一个保存点上;Git离线操作性:Git可以离线进行代码提交,因此它称得上是完全的
Wesley13 Wesley13
3年前
Git 如何拆除核弹起爆码,以及 topgit 0.7到0.8的变迁
转自:http://blog.ossxp.com/2010/01/184/我们使用topgit和git进行公司内部版本控制已经久矣,今天要求大家彻底清除git配置中的push选项。要求使用如下命令,先找到遗留topgit错误配置的git配置文件:$find.maxdepth4name.gittype
Stella981 Stella981
3年前
Git使用教程
Windows系统下GIT的使用1:Git简介:1.博客园上面找到的语言:Git是一种非常流行的分布式版本控制系统,它和其他版本控制系统的主要差别在于Git只关心文件数据的整体是否发生变化,而大多数版本其他系统只关心文件内容的具体差异,这类系统(CVS,Subversion,Perforce,Bazaar等等)每次记录有哪些文件作了更新,以及
Stella981 Stella981
3年前
CentOS下使用yum安装Git具体步骤
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git是用于Linux内核开发的版本控制工具。与常用的CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布
Stella981 Stella981
3年前
Git基础命令篇
一、Git介绍(1)Git是一个开源(LinusTorvalds为了帮助管理Linux内核开发而开发)的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,与常用的版本控制工具CVS,SVN等不同,它采用了分布式版本库的方式,不必服务器端软件支持。(2)Git的工作区、暂存区和版本库:工作区:就
胖大海 胖大海
2年前
Git 原理
简介Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具CVS,
Damumu Damumu
1年前
Git安装详细教程
Git是一个开源的分布式版本控制系统Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。Git与SVN区别Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。Git与SV
小万哥 小万哥
8个月前
Git 分支管理:优化版本控制与应急处理的关键策略
使用Git分支:轻松管理不同版本和应对紧急情况的最佳实践使用Git分支在Git中,分支是主仓库的新/独立版本。假设你有一个大型项目,需要对其进行设计更新。没有使用Git时:复制所有相关文件以避免影响实时版本开始进行设计工作,并发现代码依赖于其他文件中的代码