一、文件状态
-
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged
-
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件 -
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改 -
Staged: 暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
查看文件状态
git status #查看当前目录下所有文件的状态
git status filename #查看某个文件目前的状态
git status -s #以精简的方式显示结果
二、文件操作
(1)git add
跟踪新文件或者将文件添加至缓存区。
git add . 跟踪当前目录的所有文件以及将所有文件添加到缓存区。
(2)git commit
执行git commit 将缓存区内容添加到仓库中。
(3)git diff
执行git diff来查看执行git status 的结果的详细结果。
git diff命令显示已写入缓存和已写入缓存的区别。
尚未缓存的改动:git diff
查看已缓存的改动: git diff --cached
查看已缓存和未缓存的所有改动:git diff HEAD
(4) git reset HEAD
该命令用来取消已缓存的内容。
(5)git rm
该命令用来从工作目录中手动删除文件。
(6)git mv
该命令用于移动或者重命名一个文件、目录、软连接。
三、文件忽略
日常中,会有一些文件不需要进行版本控制,也不希望出现在未跟踪列表。例如一下日志文件,临时文件等。这种情况下,可以创建.gitignore文件,列出要忽略的文件模式。
文件.gitignore的格式规范:
-
所有空行或者以#开头的行都会被Git忽略。
-
可以使用标准的glob模式匹配,它会递归地应用在整个工作区中。
-
匹配模式可以以/开头方式递归。
-
匹配模式可以以/结尾指定目录。
-
要忽略指定模式以外地文件或目录,可以在模式前加上叹号!取反。
其他具体操作可参考: