美文网首页
工作区域、文件状态及忽略文件

工作区域、文件状态及忽略文件

作者: 一江碎月 | 来源:发表于2017-08-26 12:39 被阅读0次

工作区域

使用 Git 管理项目时,有三个工作区域:工作区间、Git 本地仓库以及暂存区

  1. 工作区间:存储从项目中提取出的某个版本的所有文件和目录,用以后继工作的目录叫工作目录。简单点说,就是存放平时工作时文件的目录

  2. 暂存区:只是一个清单文件,用以列出下次提交时要提交的文件的清单。

    • 可以通过 git ls-files -s 查看暂存区中的文件。
  3. Git 本地仓库:工作目录中的 .git 文件夹。


文件状态

git库中文件状态

任何一个文件,在 git 内都只有三种状态:已提交(Commited),已修改(modified)和已暂存(Staged)

  1. 已提交表示该文件已提交至本地仓库,也叫 Unmodified 状态;

  2. 已修改指修改了某个文件,还未保存至暂存区;

  3. 已暂存表示将已修改过的文件保存至暂时区中,尚未提交到本地仓库。

工作目录下的文件状态

工作目录下的文件状态分为两种:已跟踪与未跟踪。注意它和 git 库中文件状态的区别:后者只是已跟踪下的不同状态。

  1. 未跟踪:既没有上次更新时的快照,也不在当前的暂存区中。可以简单理解为新建的文件。

  2. 已跟踪:除了未跟踪的文件,其余的都是已跟踪的。

  3. 初始 clone 某远程库后,所有的文件都属于已跟踪文件,且处于未修改状态。

  4. 修改某文件后,会将该文件标记为已修改。再通过 add 命令将这些文件添加到暂存区,最后通过 commit 命令一次性提交暂存区中所有文件,此时文件恢复到未修改状态。

状态转换

  1. untracked 状态通过 git add 命令变为未修改状态,同时文件会被添加到暂存区中;

  2. modified 状态的文件,通过 git add 命令后会被添加到暂存区中;

  3. 通过 git commit 命令将暂存区中的文件添加到本地仓库中,所有文件又变成 unmodified 状态。


忽略文件

有些文件,既不想总出现在未跟踪文件列表中,也不想纳入到 Git 管理中,我们希望的是:Git 能忽略这些文件。对 Git 来说,这些文件就像根本不存在一样。这些文件就是我们需要忽略的。

  1. 忽略文件名必须为 .gitignore

  2. 所有空行或者以 # 开头的行都会被忽略。

  3. 匹配模式最后跟 / ,说明要忽略的是文件夹

  4. 在模式前加 ! 表示对该模式取反,即不忽略该模式可以匹配的文件

  5. 匹配模式可以以 / 开头表示只忽略当前目录下满足条件的文件,不会忽略子目录下满足条件的文件。

  6. 可以使用标准的 glob 模式进行匹配——glob 模式就是简化版的正则表达式。

  7. * 可以匹配零个或多个任意字符,即匹配任意的字符串。而不是正则中的表示某个字符出现 0 次或多次。如 *.a 就表示忽略所有以 .a 结尾的文件,不管文件名是几个字符。

  8. ? 只能匹配一个任意的字符。而不是正则表达式中的表示某个字符出现 0 次或 1 次。如 ?.txt 表示只忽略文件名为一个字符的 txt 文件,而不会忽略文件名为 2 个或 2 个以上字符的

  9. 使用两个星号(*)表示匹配任意中间目录,比如 a/**/z 可以匹配 a/z, a/b/za/b/c/z等。

下面是来自于文档的示例

# no .a files 忽略所有 .a 文件
*.a

# but do track lib.a, even though you're ignoring .a files above。但不忽略所有 lib.a 文件。
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO。忽略当前目录下的 TODO 文件,但不忽略子目录下的。
/TODO

# ignore all files in the build/ directory。忽略所有的 build 文件夹,无论是当前目录还是子目录。
build/

# ignore doc/notes.txt, but not doc/server/arch.txt。忽略 doc 目录下的 txt 文件,但不忽略其子目录下的。
doc/*.txt

# ignore all .pdf files in the doc/ directory。忽略 doc 目录下的 pdf 文件,包括子目录中的。
doc/**/*.pdf

相关文章

  • 工作区域、文件状态及忽略文件

    工作区域 使用 Git 管理项目时,有三个工作区域:工作区间、Git 本地仓库以及暂存区。 工作区间:存储从项目中...

  • git设置忽略文件

    首先来看一下忽略文件的正则: 忽略.json文件夹及文件夹下文件.json 忽略以.xml结尾的文件*.xml 忽...

  • Git 系列之「文件状态」

    Git 的文件状态是其核心,明白文件状态后对各种操作都有非常大的帮助,不同的文件状态又存储在不同的工作区域中。 文...

  • Git之文件操作

    五、文件操作 目录:文件的4种状态、忽略文件 1.文件的4种状态 版本控制就是对文件的版本控制,要对文件进行修改、...

  • svn ignore

    [转]mac OS 下配置SVN忽略文件 svn ignore 的用法(忽略文件及目录)http://blog.c...

  • cocoapods项目上传svn需要忽略的文件

    关于xcode** 过滤不需要上传的文件, 忽略文件(xcuserdata文件夹)**> 文件打开状态> 断点信息...

  • Git入门

    三种状态 文件三种状态:已提交、已修改、已暂存三个工作区域:Git仓库、工作目录、暂存区域 Git仓库目录是Git...

  • svn命令行忽略文件及文件夹

    转载并做些修改 SVN忽略文件或文件夹几种方法总结 svn ignore 的用法(忽略文件及目录) 若想创建了一个...

  • 忽略特殊文件

    忽略原则: 忽略操作系统自带文件 忽略编译生成的中间文件等 忽略带有敏感信息的文件 使用方法: 在工作区创建.gi...

  • Linux中Git学习笔记(三)

    忽略文件 可以在顶层工作目录中添加一个叫 .gitignore 的文件,来告诉 Git 系统要忽略掉哪些文件,下面...

网友评论

      本文标题:工作区域、文件状态及忽略文件

      本文链接:https://www.haomeiwen.com/subject/muymdxtx.html