对git中文件各个状态的理解

本文详细介绍了Git中文件的各个状态,包括untracked、unmodified、modified和staged,以及它们之间的转换。通过一个实例解释了为什么在某些情况下,暂存区和未暂存区会同时存在同一个文件的不同状态。同时,文章还提到了git、github、工作目录、git仓库和远程仓库等概念,帮助读者理解Git的基本工作流程。

我之前开发java项目的时候也有用过版本管理工具svn,不过老是弄不清楚各个状态之间的关系和操作的含义,最近使用github管理自己的代码和一些笔记,对于一些操作还是不太理解(太笨了。。。),网上也查过一些零零碎碎的相关内容,不过还是模糊不清。于是我打算较为系统地学习一下git和github。http://git-scm.com/book/zh/v1这个网站系统地介绍了git原理还有操作等等,有兴趣的朋友可以参考学习。

要使用git工具进行版本管理,首先要明白git各种状态的含义。如下图所示,

git 状态周期

git库中文件的整个生命周期中的状态包括:

  • untracked(未被跟踪)
  • unmodified(未修改)
  • modified(已修改)
  • staged(在暂存区中)

其中unmodifiedmodifiedstaged表示文件已被跟踪,即已经加入版本管理中。

当从github远程库中clone项目到本地后,该项目中所有文件状态为unmodified;在该项目中新建一个文件后,该文件的状态为untracked,通过git add文件状态变为unmodified(此时该文件的状态同时为staged,已经存在暂存区中了,其实git add的潜台词就是把目标文件加入暂存区域),通过编辑,文件状态变为modified,被修改的文件未被放到暂存区域中,此时通过git status命令查看的话,会发现暂存区中和未暂存区同时存在该文件!!!为什么会这样呢???因为此时暂存区中的该文件是上次通过git add命令添加时候所处的状态,而未暂存区中该文件的状态是这次通过编辑后所处的状态,git记录了两种状态,如果这个时候用git commit命令提交该文件,只会把该文件的前一种状态保存到git仓库,修改后的状态不会保存到git仓库,要通过git add操作才能将修改后的文件状态加入到暂存区域中,然后可以通过git commit命令将修改后的文件提交到git仓库,有点啰嗦了==,能够理解就好^_^。

讲到这里,有必要提一下以下三个概念:

  • git
  • github
  • 工作目录
  • git仓库(版本库)
  • 远程仓库

git仅仅是在本地对代码进行版本管理,而github在网上提供了远程仓库,用来存放代码。如果我们只在本地使用git工具的话,只需用到工作目录git仓库,如果使用github的话,那么工作目录git仓库远程仓库三个都要用到。

工作目录即本地项目的可见目录,git仓库即版本库,由暂存区暂存区要提交的分支(branch)组成,工作目录中的文件通过git add操作后就进入到git仓库的暂存区了,在暂存区中的文件通过git commit操作后,可以将该文件和添加的批注添加到git仓库的指定分支中,而通过git push操作,我们可以将git仓库中的文件同步到远程仓库

关于工作目录git仓库(版本库)的原理可用如下图解释,具体参考http://blog.chinaunix.net/uid-10415985-id-4112861.html

git中的版本库,暂存区和工作区

这篇文章主要介绍了通过git管理的文件的生命周期中的各种状态以及我对各种状态和各个概念的理解,如有不正确之处,恳请各位大虾批评指正,关于具体的git和github具体操作将在下次讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值