git如何忽略文件

1. 什么是Git忽略文件

在使用Git保存项目时,我们有时候会需要忽略一些文件或者文件夹,这些文件或者文件夹可能包含一些不必要的或者机密的信息或者是我们在本地使用但是不想提交到Git仓库中的内容。Git提供了忽略文件的功能,可以列出需要忽略的文件或者文件夹的名称或者通配符,从而避免它们被意外提交到Git仓库中。

2. Git忽略文件的方法

2.1 针对整个仓库的忽略

如果某个文件或者文件夹需要被整个仓库忽略掉,可以直接在仓库的根目录下创建一个名为.gitignore的文件,并在文件中列出需要忽略的文件或者文件夹的名称或者通配符。

# 忽略所有的 .a 文件

*.a

# 但是 lib.a 除外

!lib.a

# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

/TODO

# 忽略 build/ 文件夹下的所有文件

build/

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

doc/*.txt

# 忽略所有的 .pdf 文件在 doc/ directory 中

doc/**/*.pdf

这个文件中列出的规则将适用于整个仓库。你可以使用 # 来注释掉一行,需要忽略的文件或者文件夹的名称或者通配符,则写在每一行中。要使git忽略文件中的规则生效,需要先将.gitignore文件添加到git仓库并进行提交。

git add .gitignore

git commit -m "Add .gitignore file"

2.2 针对指定目录的忽略

如果想忽略某个目录下特定的文件或者文件夹,可以在该目录下创建一个名为.gitignore的文件,并在文件中列出需要忽略的文件或者文件夹的名称或者通配符。

# 忽略所有的 .a 文件

*.a

# 但是 lib.a 除外

!lib.a

# 忽略 build/ 文件夹下的所有文件

build/

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

*.txt

# 忽略项目根目录下的 TODO 文件和 subdir/TODO文件

/TODO

subdir/TODO

这里的规则只适用于指定的目录及其子目录。同样的,为使规则生效,需要先将.gitignore文件添加到git仓库并进行提交。

3. Git忽略文件的注意事项

3.1 忽略文件的原则

Git忽略文件的原则是忽略已经被Git管理的文件,而不是忽略在添加到Git之前就已经存在的文件,因此在添加.gitignore文件之前需要先确保需要忽略的文件已经从Git仓库中remove掉了,否则即使添加了规则也无法生效。

3.2 忽略文件的影响

在.gitignore文件中忽略的文件将会被从Git跟踪中排除出去,这意味着这些文件不会出现在未跟踪的文件列表中,同时也不会出现在git status命令的输出中。如果之前已经被Git跟踪的文件需要被忽略,可以使用git rm命令将它从Git跟踪中删除,或者使用git update-index命令将它标记为assume-unchanged。

3.3 忽略文件的优先级

如果同一个文件同时被.gitignore文件和.git/exclude文件中的规则忽略了,那么.gitignore文件中的规则优先级更高,也就是说这个文件不会被提交到仓库中。

3.4 忽略文件的例外

在.gitignore文件中可以使用感叹号(!)来指定不需要忽略的某些文件或者目录。例如:如果你想忽略某个目录下的所有文件、但是想跟踪某个目录下的某个文件,则可以在.gitignore文件中添加以下规则:

# 忽略 build/ 文件夹下的所有文件

build/

# 不忽略 build/docs 文件夹

!build/docs/

4. 总结

Git忽略文件的功能能够避免一些不必要的或者机密的信息或者是我们在本地使用但是不想提交到Git仓库中的内容被误提交到Git中。可以使用.gitignore文件将某些文件或者文件夹排除在Git跟踪之外。在使用忽略文件前,需要先确保文件已经从Git仓库中引出,否则规则无法生效。忽略文件的优先级是.gitignore文件高于.git/exclude文件,同时可以使用!来指定例外情况。