.gitignore使用指南

打印 上一主题 下一主题

主题 1842|帖子 1842|积分 5526

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
.gitignore使用指南

目录



  • 什么是.gitignore
  • 为什么须要.gitignore
  • 如何创建.gitignore文件
  • .gitignore文件的语法规则

    • 忽略单个文件
    • 忽略目录
    • 忽略特定类型的文件
    • 不忽略特定文件或目录
    • 递归匹配

  • 示例.gitignore文件
  • 留意事项
  • 更多特别场景匹配规则

    • 忽略多个特定后缀的文件
    • 忽略特定目录下的所有隐藏文件

  • 跨平台使用差别

    • 路径分隔符差别
    • 大小写敏感性差别
    • 忽略特定前缀的文件
    • 忽略特定后缀的文件

  • 与其他工具集成

    • 与IDE集成
    • 与持续集成工具集成

  • 更复杂的匹配规则

    • 忽略特定目录下的特定文件
    • 忽略特定目录下的所有文件

  • 不同项目类型的最佳实践

    • Python项目
    • Java项目
    • JavaScript项目
    • Go项目
    • C++项目
    • 更复杂的匹配规则

      • 忽略特定目录下特定后缀的文件
      • 忽略特定目录下特定前缀的文件
      • 忽略特定目录下特定后缀和前缀的文件


什么是.gitignore

.gitignore 是一个文本文件,用于告诉Git哪些文件或目录在版本控制中应该被忽略。当你实行 git add 下令时,Git会参考 .gitignore 文件的内容,不会将其中指定的文件添加到暂存区。
为什么须要.gitignore

在项目开辟过程中,有些文件是不须要进行版本控制的,比方:


  • 编译天生的文件:如 .class、.pyc 等。
  • 日记文件:如 .log 文件。
  • 临时文件:如 .tmp 文件。
  • 依赖文件:如 node_modules 目录。
使用 .gitignore 可以避免将这些文件添加到版本库中,减少版本库的大小,同时也可以避免不须要的文件冲突。
如何创建.gitignore文件

在项目根目录下创建一个名为 .gitignore 的文件,可以使用以下下令:
  1. touch .gitignore
复制代码
.gitignore文件的语法规则

忽略单个文件

要忽略单个文件,只需在 .gitignore 文件中写入该文件的名称,比方:
  1. test.txt
复制代码
这将忽略项目根目录下的 test.txt
文件。
忽略目录

要忽略整个目录,在目录名称后面加上斜杠 /,比方:
  1. logs/
复制代码
这将忽略项目根目录下的 logs 目录及其所有子目录和文件。
忽略特定类型的文件

可以使用通配符 * 来忽略特定类型的文件,比方:
  1. *.log
复制代码
这将忽略所有以 .log 结尾的文件。
不忽略特定文件或目录

如果你想在忽略某个目录的同时,不忽略其中的某个文件或子目录,可以使用 ! 符号,比方:
  1. logs/
  2. !logs/
  3. important.log
复制代码
这将忽略 logs 目录下的所有文件,但不忽略 logs/

important.log 文件。
递归匹配

使用 ** 可以进行递归匹配,比方:
  1. **/*.log
复制代码
这将忽略项目中所有目录下的 .log 文件。
示例 .gitignore 文件

以下是一个常见的 .gitignore 文件示例,实用于Python项目:
  1. # Byte-compiled / optimized / DLL files __pycache__/ *.pyc *.pyo *.pyd # C extensions *.so # Distribution / packaging dist/ build/ *.egg-info/ # Logs and databases *.log
  2. *.sql *.sqlite # IDEs and editors .idea/ .vscode/ *.iml
复制代码
留意事项



  • .gitignore 文件只对未被跟踪的文件有效:如果一个文件已经被Git跟踪,即使在 .gitignore 文件中添加了该文件,Git仍然会继续跟踪它。如果你想忽略已经被跟踪的文件,可以使用 git rm --cached 下令将其从版本库中移除。
  • .gitignore 文件的位置:.gitignore 文件通常放在项目根目录下,但也可以在子目录中创建 .gitignore 文件,子目录中的 .gitignore 文件只对该子目录及其子目录有效。
  • .gitignore 文件的优先级:子目录中的 .gitignore 文件会覆盖父目录中的 .gitignore 文件。
更多特别场景匹配规则

忽略多个特定后缀的文件

可以使用 | 结合正则表达式来忽略多个特定后缀的文件,须要在 .gitignore 文件中使用正则表达式模式,同时要确保 Git 支持正则表达式模式匹配。比方:
  1. *.(log|tmp|bak)
复制代码
这将忽略所有以 .log、.tmp 或 .bak 结尾的文件。
忽略特定目录下的所有隐藏文件

可以使用 / 结合特定目录和隐藏文件的前缀 . 来忽略特定目录下的所有隐藏文件,比方:
  1. /logs/
  2. .*
复制代码
这将忽略 logs 目录下的所有隐藏文件。
跨平台使用差别

路径分隔符差别

在 Windows 系统中,路径分隔符是反斜杠 \,而在 Linux 和 macOS 系统中,路径分隔符是正斜杠 /。在 .gitignore 文件中,应该始终使用正斜杠 / 作为路径分隔符,由于 Git 会主动处置惩罚不同系统的路径分隔符差别。比方:
  1. logs/
复制代码
无论是在 Windows、Linux 照旧 macOS 系统中,这个规则都会精确忽略 logs 目录。
大小写敏感性差别

在 Windows 和 macOS 系统中,文件系统默认是大小写不敏感的,而在 Linux 系统中,文件系统默认是大小写敏感的。这意味着在 .gitignore 文件中,大小写的匹配规则大概会有所不同。比方:
  1. Test.txt
复制代码
在 Windows 和 macOS 系统中,这个规则会忽略 Test.txt
、test.txt 等文件,而在 Linux 系统中,只会忽略 Test.txt
文件。如果须要在不同系统中保持划一的匹配规则,发起在 .gitignore 文件中使用划一的大小写。
忽略特定前缀的文件

可以使用 * 结合特定前缀来忽略以特定字符串开头的文件,比方:
  1. prefix_*
复制代码
这将忽略所有以 prefix_ 开头的文件。
忽略特定后缀的文件

除了使用 * 忽略特定后缀的文件,还可以使用 ? 来匹配单个字符,比方:
  1. *.log?
复制代码
这将忽略所有以 .log 开头,后面跟一个任意字符的文件。
与其他工具集成

与IDE集成

很多集成开辟环境(IDE)可以主动识别 .gitignore 文件,并在文件浏览和搜索中排除被忽略的文件。比方,在IntelliJ IDEA中,被 .gitignore 文件忽略的文件会以灰色体现,而且不会出如今项目搜索结果中。
与持续集成工具集成

在持续集成(CI)环境中,.gitignore 文件可以资助排除不须要的文件,减少构建时间和资源消耗。比方,在Jenkins或GitLab CI/CD中,构建过程会主动遵循 .gitignore 文件的规则,只处置惩罚须要的文件。
更复杂的匹配规则

忽略特定目录下的特定文件

可以使用 / 结合特定目录和文件名来忽略特定目录下的特定文件,比方:
  1. /logs/
  2. *.log
复制代码
这将忽略 logs 目录下的所有 .log 文件。
忽略特定目录下的所有文件

可以使用 / 结合特定目录来忽略特定目录下的所有文件,比方:
  1. /logs/
复制代码
这将忽略 logs 目录下的所有文件。
不同项目类型的最佳实践

Python项目

  1. # Byte-compiled / optimized / DLL files
  2. __pycache__/
  3. *.pyc
  4. *.pyo
  5. *.pyd
  6. # C extensions
  7. *.so
  8. # Distribution / packaging
  9. /dist/
  10. /build/
  11. *.egg-info/
  12. # Logs and databases
  13. *.log
  14. *.sql
  15. *.sqlite
  16. # IDEs and editors
  17. .idea/
  18. .vscode/
  19. *.iml
复制代码
Java项目

  1. # Compiled class file
  2. *.class
  3. # Log file
  4. *.log
  5. # BlueJ files
  6. *.ctxt
  7. # Mobile Tools for Java (J2ME)
  8. .mtj.tmp/
  9. # Package Files #
  10. *.jar
  11. *.war
  12. *.nar
  13. *.ear
  14. *.zip
  15. *.tar.gz
  16. *.rar
  17. # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
  18. hs_err_pid*
复制代码
JavaScript项目

  1. # Logs
  2. logs
  3. *.log
  4. npm-debug.log*
  5. yarn-debug.log*
  6. nyan-debug.log*
  7. # Runtime data
  8. pids
  9. *.pid
  10. *.seed
  11. *.pid.lock
  12. # Directory for instrumented libs generated by jscoverage/JSCover
  13. lib-cov
  14. # Coverage directory used by tools like istanbul
  15. coverage
  16. # nyc test coverage
  17. .nyc_output
  18. # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
  19. .grunt
  20. # Bower dependency directory (https://bower.io/)
  21. bower_components
  22. # node-waf configuration
  23. .lock-wscript
  24. # Compiled binary addons (http://nodejs.org/api/addons.html)
  25. build/Release
  26. # Dependency directories
  27. node_modules/
  28. jspm_packages/
  29. # TypeScript v1 declaration files
  30. typings/
  31. # TypeScript cache
  32. .tscache
复制代码
Go项目

  1. # Binaries for programs and plugins
  2. *.exe
  3. *.exe~
  4. *.dll
  5. *.so
  6. *.dylib
  7. # Test binary, built with "go test -c"
  8. *.test
  9. # Output of the go coverage tool, specifically when used with LiteIDE
  10. *.out
复制代码
C++项目

  1. # Compiled Object files
  2. *.slo
  3. *.lo
  4. *.o
  5. *.obj
  6. # Precompiled Headers
  7. *.gch
  8. *.pch
  9. # Compiled Dynamic libraries
  10. *.so
  11. *.dylib
  12. *.dll
  13. # Fortran module files
  14. *.mod
  15. *.smod
  16. # Executables
  17. *
复制代码
更复杂的匹配规则

忽略特定目录下特定后缀的文件

可以使用 / 结合特定目录和后缀来忽略特定目录下特定后缀的文件,比方:
  1. /logs/
  2. *.log
复制代码
这将忽略 logs 目录下的所有 .log 文件。
忽略特定目录下特定前缀的文件

可以使用 / 结合特定目录和前缀来忽略特定目录下特定前缀的文件,比方:
  1. /logs/
  2. prefix_*
复制代码
这将忽略 logs 目录下所有以 prefix_ 开头的文件。
忽略特定目录下特定后缀和前缀的文件

可以使用 / 结合特定目录、前缀和后缀来忽略特定目录下特定后缀和前缀的文件,比方:
  1. /logs/
  2. prefix_*
  3. .log
复制代码
这将忽略 logs 目录下所有以 prefix_ 开头且以 .log 结尾的文件。
以上就是 .gitignore 文件的基本使用指南以及更多特别匹配规则和不同项目类型的最佳实践等内容,希望对你有所资助。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表