• Git 中文件的状态和流转区


    Git的文件主要处于三种状态,分别是

    staged,

    modified,

    committed。

     Git文件流转有三个区域,分别是

    工作区域、

    索引区域、

    本地数据区域。

    要修改对一个文件进行操作,首先要看下这个文件的状态。

    工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。

    已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。

    而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。

    初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。下面的这张表充分说明了不同状态间的切换。

    针对本地的一个项目,如果不是从github上下载,则所有文件一开始都属于untracked状态,否则都属于tracked状态。

    属于untracked状态的文件,如果我们不将其添加到git中,任意的修改都不会影响git状态。

    所以如果是我们想要保存到git中的文件,我们首先要将其添加到git中,命令就是git add。

    添加之后的文件就属于tracked状态。

    tracked状态本身又有三个子状态:modified,staged和committed。

    一个未经修改的文件被添加到git中之后将会是staged状态,此时我们运行git commit将会使这个文件变为committed状态。

    变为committed状态之后,git就为该项目生成了一个snapshot,我们就可以将其push到github中。

    一个被commit的文件如果被修改,其状态又会变为modified状态,等待新的add和commit。

    如果我们想将一个文件从项目中除名,可以采用git rm命令。不加--cached参数的rm命令将会物理删除文件,添加该选项将会把文件从git项目中删除,但是不物理删除。

    文件的状态也变为untracked状态。git中文件状态转换关系如下图:

    文件的三种状态

    好,现在请注意,接下来要讲的概念非常重要。

    对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。

    已提交(committed): 已提交表示该文件已经被安全地保存在本地数据库中了;

    已修改(modified): 已修改表示修改了某个文件,但还没有提交保存;

    已暂存(staged) : 已暂存表示把已修改的文件放在下次提交时要保存的清单中。

    Git文件流转有三个区域,分别是工作区域、索引区域、本地数据区域。

    工作树中的文件添加到git版本控制索引中,则git开始对文件进行跟踪监控。

    索引区域也可以理解为数据暂存区域,当提交操作时,暂存区域的数据被记录到本地数据仓库中。

    每个项目都有一个 Git 目录(译注:如果 git clone 出来的话,就是其中 .git 的目录;如果 git clone --bare 的话,新建的目录本身就是 Git 目录。),

    它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。

    从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。

    这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

    所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。

    基本的 Git 工作流程如下:

    1. 在工作目录中修改某些文件。
    2. 对修改后的文件进行快照,然后保存到暂存区域。
    3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

    所以,我们可以从文件所处的位置来判断状态:

    如果是 Git 目录中保存着的特定版本文件,就属于已提交状态(未修改状态);

    如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

    如果作了修改并已放入暂存区域,就属于已暂存状态;

  • 相关阅读:
    redhat 6.4下PXE+Kickstart无人值守安装操作系统
    ubuntu14.04安装好Hadoo之后接着安装hbase和介绍常用命令
    避坑之Hadoop安装伪分布式(Hadoop3.2.0/Ubuntu14.04 64位)
    kindeditor文件上传设置文件说明为上传文件名(JSP版)
    sqlmap 扫描注入漏洞
    局域网内访问不同网段的主机(转记)
    cmd创建用户开启3389命令
    用python来更改windows开机密码
    代码安全之上传文件
    web渗透(转)
  • 原文地址:https://www.cnblogs.com/shangdawei/p/3348694.html
Copyright © 2020-2023  润新知