Menu
×
   ❮     
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 忽略和 .gitignore


Git 忽略

当您与他人共享代码时,通常有一些文件或项目部分您不想共享。

示例

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

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 所有 name 文件夹以及 lib 文件夹中任何 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 文件



开始练习


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.