菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Git Ignore 和 .gitignore


Git Ignore

当您与其他人员共享代码时,通常会有一些文件或项目的一部分您不希望共享。

示例

  • 日志文件
  • 临时文件
  • 隐藏文件
  • 个人文件
  • 等等。

Git 可以使用 `.gitignore` 文件指定哪些文件或项目部分应被 Git 忽略。

Git 不会跟踪 `.gitignore` 中指定的文件和文件夹。但是,`.gitignore` 文件本身**会被** Git 跟踪。


创建 .gitignore

要创建 `.gitignore` 文件,请转到本地 Git 的根目录并创建它。

示例

touch .gitignore

现在使用文本编辑器打开该文件。

我们只添加两个简单的规则:

  • 忽略所有具有 `.log` 扩展名的文件。
  • 忽略名为 `temp` 的任何目录中的所有文件。

示例

# 忽略所有 .log 文件
*.log

# 忽略名为 temp 的任何目录中的所有文件
temp/

现在,所有 `.log` 文件以及 `temp` 文件夹中的任何内容都将被 Git 忽略。

注意: 在这种情况下,我们使用一个 `.gitignore` 文件,该文件适用于整个存储库。

也可以在子目录中使用额外的 `.gitignore` 文件。这些文件仅适用于该目录内的文件或文件夹。



.gitignore 文件规则

以下是匹配 `.gitignore` 文件中模式的一般规则: 

模式 解释/匹配 示例
  空白行将被忽略。  
# 文本注释 以 # 开头的行将被忽略。  
name 所有名为 `name` 的文件、名为 `name` 的文件夹,以及任何名为 `name` 的文件夹中的文件和文件夹。 /name.log
/name/file.txt
/lib/name.log
name/ 以 / 结尾表示该模式是针对文件夹的。匹配任何名为 `name` 的文件夹中的所有文件和文件夹。 /name/file.txt
/name/log/name.log

不匹配
/name.log
name.file 所有名为 `name.file` 的文件。 /name.file
/lib/name.file
/name.file 以 / 开头表示该模式仅匹配根文件夹中的文件。 /name.file

不匹配
/lib/name.file
lib/name.file 指定特定文件夹中文件的模式始终是相对于根目录的(即使您没有以 / 开头)。 /lib/name.file

不匹配
name.file
/test/lib/name.file
**/lib/name.file 以 ** 开头,然后是 /,表示它匹配存储库中的任何文件夹,而不仅仅是根目录。 /lib/name.file
/test/lib/name.file
**/name 所有名为 `name` 的文件夹,以及任何名为 `name` 的文件夹中的文件和文件夹。 /name/log.file
/lib/name/log.file
/name/lib/log.file
/lib/**/name 位于 `lib` 文件夹内的所有名为 `name` 的文件夹,以及任何名为 `name` 的文件夹中的文件和文件夹。 /lib/name/log.file
/lib/test/name/log.file
/lib/test/ver1/name/log.file

不匹配
/name/log.file
*.file 所有扩展名为 `*.file` 的文件。 /name.file
/lib/name.file
*name/ 所有以 `name` 结尾的文件夹。 /lastname/log.file
/firstname/log.file
name?.file ? 匹配**单个**非特定字符。 /names.file
/name1.file

不匹配
/names1.file
name[a-z].file [范围] 匹配指定范围内的**单个**字符(在此示例中,为 a-z 范围内的字符,也可能包含数字)。 /names.file
/nameb.file

不匹配
/name1.file
name[abc].file [集合] 匹配指定字符集中的**单个**字符(在此示例中,为 a、b 或 c)。 /namea.file
/nameb.file

不匹配
/names.file
name[!abc].file [!集合] 匹配**除**指定字符集(在此示例中为 a、b 或 c)之外的**单个**字符。 /names.file
/namex.file

不匹配
/namesb.file
*.file 所有扩展名为 `*.file` 的文件。 /name.file
/lib/name.file
name/
!name/secret.log
! 表示否定或排除。匹配任何名为 `name` 的文件夹中的所有文件和文件夹,除了 `name/secret.log`。 /name/file.txt
/name/log/name.log

不匹配
/name/secret.log
*.file
!name.file
! 表示否定或排除。所有扩展名为 `*.file` 的文件,除了 `name.file`。 /log.file
/lastname.file

不匹配
/name.file
*.file
!name/*.file
junk.*
在否定之后添加新模式将重新忽略之前被否定的文件。
所有扩展名为 `*.file` 的文件,除了 `name` 文件夹中的文件。除非文件名是 junk。
/log.file
/name/log.file

不匹配
/name/junk.file

本地和个人 Git 忽略规则

也可以忽略文件或文件夹,但不在分布式的 `.gitignore` 文件中显示。

这些类型的忽略规则指定在 `.git/info/exclude` 文件中。它的工作方式与 `.gitignore` 相同,但不会显示给其他人。


通过练习来测试自己

练习

在 `.gitignore` 文件中添加一行以忽略所有 `.temp` 文件。



开始练习


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持