前言
一般情况下,对于那些自动生成的文件(比如node_modules
, .DS_Store
),我们是不希望他们处于版本控制之下的。因此,我们可以在项目的根目录下添加一个.gitignore
文件使得git
不管理这些文件。
另外,我们也可以在项目的子目录中创建一个.gitignore
文件,这样一来,该文件就只能影响该目录下的文件。这在某些情况下是很有用的例如,如果我们的项目是用多语言来编写的,那么他们应各自有一个不同的配置文件。
语法规范
- 空行不匹配任何文件,因此它可以作为可读性的分隔符。
- 以
#
开头的行用作注释 - 斜线
/
用作目录分隔符 *
匹配除斜杠以外的任何内容?
匹配除/
之外的任何一个字符**
与完整路径名匹配的模式中的两个连续星号具有特殊含义- 前导
**
后跟斜杠表示在所有目录中匹配 - 尾随的
/**
匹配里面的所有内容 - 斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录
- 其他连续的星号被视为常规星号,将根据之前的规则进行匹配
- 前导
!
表示不忽略匹配到的文件或目录
关于路径指定
/dir/
就是当前的dir文件夹,不包含子文件夹而
dir/
不仅仅是当前的文件夹也包括子文件夹
配置文件示例
# 忽略所有目录下文件名为a的任何文件
a.*
# 忽略所有目录下后缀为txt的文件
*.txt
# 不忽略所有目录下的c.txt文件
!c.txt
# 忽略file目录下所有文件,包括其他目录下的file目录下的文件
# 例如 a/file下面的文件会被忽略
file/
# 只忽略当前file目录下所有文件,不包括其他目录下的file目录下的文件
# 例如 a/file下面的文件不会被忽略
/file
# 忽略任何位置file目录下的所有文件
file
# 忽略任何位置file目录下的所有文件 同file
**/file
# 忽略任何直接位于c目录下的file目录下的所有文件
**/c/file
# 同file/
file/**
# 忽略a/file,a/c/file,a/c/d/file 目录下的所有文件
a/**/file
复制代码
当
.gitignore
配置发生冲突时,后面的配置会覆盖前面的配置
Github 上为开发者提供了各种环境以及各种编程语言的 gitignore 文件配置模版,可以根据自己的需求选用
注意⚠️
.gitignore
问价中的配置只能影响那些当前还未交由git来管理的文件。如果其中某个文件已经被现有的仓库包含了,那么他的修改依然会被git记录。我们可以通过下面的方法来解决这个问题。
git update-index --assume-unchanged 文件名
// 恢复该文件的提交
git update-index --no-assume-unchanged 文件名
复制代码
总结
要写一个.gitignore
文件,首先我们得了解.gitignore
文件的语法规范,然后知道那些文件是要被我们忽略的,最后注意.gitignore
文件只会管理还未提交到git的文件
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END