📅  最后修改于: 2023-12-03 15:00:55.707000             🧑  作者: Mango
当我们使用Git管理代码时,有时候我们不希望Git跟踪一些文件或者文件夹,因为这些文件或者文件夹可能包含敏感信息或者不需要被版本控制。
而对于嵌套的文件夹来说,我们可能会希望在忽略父文件夹的同时也忽略其下的所有子文件夹。这时,就需要使用Git exclude属性来实现。
Git Exclude属性可以让我们在Git仓库中指定一些文件或者文件夹,告诉Git不要跟踪它们。在Git中,有两种方法可以设置Exclude属性。
.gitexclude
文件在Git仓库的根目录下创建一个名为.gitexclude
的文件,并在其中添加需要被忽略的文件或者文件夹,每行一个。
*.log
build/
dist/
node_modules/
上述.gitexclude
文件中包含了三个需要被忽略的文件或者文件夹:所有以.log
结尾的文件、名为build
的文件夹、名为dist
的文件夹以及包含在node_modules
文件夹下的所有文件。
注意:.gitexclude
文件中的忽略规则会影响整个仓库,包括所有分支。
.git/info/exclude
文件除了在Git仓库的根目录下创建.gitexclude
文件外,我们还可以在.git/info
目录下创建一个名为exclude
的文件,并在其中添加需要被忽略的文件或者文件夹。其格式与.gitexclude
文件相同,每行一个。
*.log
build/
dist/
node_modules/
上述.git/info/exclude
文件中包含了三个需要被忽略的文件或者文件夹:所有以.log
结尾的文件、名为build
的文件夹、名为dist
的文件夹以及包含在node_modules
文件夹下的所有文件。
注意:.git/info/exclude
文件中的忽略规则只会影响当前仓库,不会被提交到Git服务器。
对于嵌套的文件夹来说,使用Git Exclude属性可以实现忽略父文件夹的同时也忽略其下的所有子文件夹。
例如,在.gitexclude
或者.git/info/exclude
文件中添加如下一行:
build/**
上述规则表示,忽略名为build
的文件夹及其下的所有子文件夹和文件。其中,**
表示匹配任意层数的子文件夹,*
表示匹配当前层的所有文件和子文件夹。
另外一个例子,如果我们想要忽略app
文件夹及其下以.js
结尾的所有文件,可以添加如下规则:
app/**/*.js
上述规则表示,忽略名为app
的文件夹及其下所有名称以.js
结尾的文件。其中,**
表示匹配任意层数的子文件夹,*
表示匹配当前层的所有文件和子文件夹。
Git Exclude属性是很常用的一个Git功能,它可以让我们忽略掉一些不需要被版本控制的文件或者文件夹。当需要忽略嵌套的文件夹时,我们可以使用**
通配符来匹配任意层数的子文件夹。