git学习日志-git文件的跟踪

2020-06-08  本文已影响0人  Levi_moon

在我们的工作目录下,每个文件不外乎有两种状态:已跟踪未跟踪

在克隆某一git仓库时,工作目录中的所有文件都是已跟踪文件。

文件追踪流程.png

检查文件的状态

可以通过git status命令查看哪些文件处于什么状态。

查看git状态.png

显示当前所在分支名称,没有出现任何处于未跟踪状态的新文件等信息。

现在我们在项目下创建一个新的文件,比如说创建README.md文件。然后再执行git status命令,可以看到以下结果:

查看git状态.png

可以看到新建的文件出现在Untracked files下面,它表示未跟踪的文件(git在之前的快照中没有这些文件)。

git不会自动跟踪这些未跟踪的文件,需要我们明确地告诉git“我们要跟踪这些文件”才行。

查看状态也可以使用简略模式,在git status命令后加上-s--short参数。如图:

简略模式.png

显示结果分为两列,左列指示暂存区及工作区的状态,右列指示文件。
而左列又分为两栏,左栏指示暂存区的状态,右栏指示工作区的状态。


跟踪新文件

使用git add命令可以开始跟踪一个文件。

如果我们想跟踪刚创建的README.md文件,我们需要运行以下命令:

git add README.md

运行完成以后再查看状态,运行git status,可以看到README.md文件已经被跟踪了,并且这个文件处于暂存状态(Changes to be committed:目录下的文件都是已暂存状态)。

查看git状态.png

如果提交的话,那么这个文件在我们运行git add时的版本将被留存在git的历史记录中。

注意:

如果git add命令后加目录参数,那么将递归地跟踪该目录下的所有文件。


暂存已修改的文件

现在我们再创建一个新文件README-CN.md,并跟踪这个文件,然后再修改这个文件。

运行git status命令,查看状态,结果显示如下:

查看git状态.png

README-CN.md文件出现在Changes not staged for commit:下面,这就说明已跟踪的文件内容发生了变化,但是还没有放到暂存区。如果想暂存这次更新,就需要运行git add命令。

注意:

git add命令应该理解为:将内容添加到下一次提交中,而不能简单的理解为:将一个文件添加到项目中

运行git add命令,将README-CN.md文件放到暂存区,现在两个文件都已经暂存了。如果此时,我们再对README-CN.md文件内容进行修改,再运行git status命令,查看结果:

查看git状态.png

会看到README-CN.md文件同时存在于暂存区和非暂存区。这是因为git只是暂存了运行git add命令时的版本,如果有修改的文件,需要再次运行git add命令把最新的版本暂存起来。


忽略文件

如果有文件不希望被git管理,那么可以创建一个名为.gitignore的文件,列出要忽略的文件模式。

.gitignore的文件的格式如下:

注意:

glob模式是指shell中使用的简化了的正则表达式。

*匹配零个或多个任意字符;
[abc]匹配任何一个列在方括号中的字符(要么匹配一个a,要么匹配一个b,要么匹配一个c);
?只匹配一个任意字符;
方括号中如果使用短线分隔两个字符,表示所有在这两个字符范围内的都可以匹配([0-9]表示匹配所有0到9的数字);
**表示匹配任意中间目录,比如a/**/z可以匹配a/za/b/za/b/c/z等。

例如:

# 忽略所有的.a文件
*.a

# 跟踪所有的lib.a,即时在前边忽略了.a文件
!lib.a

# 只忽略当前目录下的todo文件,而不会忽略a/todo文件
/todo

# 忽略任何目录下名为build的文件夹
build/

# 忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt

# 忽略doc/目录及其所有子目录下的.pdf文件
doc/**/*.pdf

查看不同

通过git diff命令可以查看尚未暂存的文件更新了哪些内容。

查看不同

此命令是比较工作目录中当前文件和暂存区快照之间的差异,即修改后还没暂存的变化内容。

如果要查看已暂存的将要提交到下次提交里的内容,可以使用

git diff --staged

这条命令是将比对已暂存文件与最后一次提交文件的差异。


提交

暂存区的文件可以通过git commit命令进行提交,填写注释,保存退出。

提交写注释.png

也可以在git commit命令后加-m "注释"(注意注释要加双引号)完成提交。

如果觉得每次都要先添加到暂存区再提交很繁琐,也可以在git commit后加上-a参数,这样git会自动将所有已跟踪过的文件暂存起来一并提交,从而跳过git add步骤。


移除文件

若希望从git中移除某个文件,就必须从已跟踪文件清单中移除(也就是说从暂存区移除),然后再提交。

手动删除文件,运行git status时,会在未暂存清单(Changes not staged for commit)中看到以下信息。

手动删除文件.png

然后再使用git rm命令可以记录移除指定文件的操作。

git rm test.txt
git移除删除的文件.png

在下一次提交时,该文件就不会再被纳入版本管理了。

git rm --cached test.txt

git rm命令后也可以加文件或目录名。

# 移除a目录下的所有.log文件
git rm a/\*.log

# 移除所有以.txt文件结尾的文件
git rm \*.txt

移动文件

使用git mv命令可以对文件改名。

git mv a.txt b.txt
git修改文件名.png

其实git修改文件名可以分为以下三条命令:

mv a.txt b.txt
git rm a.txt
git add a.txt
上一篇下一篇

猜你喜欢

热点阅读