.gitignore使用指南
.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 的文件,可以使用以下下令:
touch .gitignore
.gitignore文件的语法规则
忽略单个文件
要忽略单个文件,只需在 .gitignore 文件中写入该文件的名称,比方:
test.txt
这将忽略项目根目录下的 test.txt
文件。
忽略目录
要忽略整个目录,在目录名称后面加上斜杠 /,比方:
logs/
这将忽略项目根目录下的 logs 目录及其所有子目录和文件。
忽略特定类型的文件
可以使用通配符 * 来忽略特定类型的文件,比方:
*.log
这将忽略所有以 .log 结尾的文件。
不忽略特定文件或目录
如果你想在忽略某个目录的同时,不忽略其中的某个文件或子目录,可以使用 ! 符号,比方:
logs/
!logs/
important.log 这将忽略 logs 目录下的所有文件,但不忽略 logs/
important.log 文件。
递归匹配
使用 ** 可以进行递归匹配,比方:
**/*.log
这将忽略项目中所有目录下的 .log 文件。
示例 .gitignore 文件
以下是一个常见的 .gitignore 文件示例,实用于Python项目:
# Byte-compiled / optimized / DLL files __pycache__/ *.pyc *.pyo *.pyd # C extensions *.so # Distribution / packaging dist/ build/ *.egg-info/ # Logs and databases *.log
*.sql *.sqlite # IDEs and editors .idea/ .vscode/ *.iml 留意事项
[*].gitignore 文件只对未被跟踪的文件有效:如果一个文件已经被Git跟踪,即使在 .gitignore 文件中添加了该文件,Git仍然会继续跟踪它。如果你想忽略已经被跟踪的文件,可以使用 git rm --cached 下令将其从版本库中移除。
[*].gitignore 文件的位置:.gitignore 文件通常放在项目根目录下,但也可以在子目录中创建 .gitignore 文件,子目录中的 .gitignore 文件只对该子目录及其子目录有效。
[*].gitignore 文件的优先级:子目录中的 .gitignore 文件会覆盖父目录中的 .gitignore 文件。
更多特别场景匹配规则
忽略多个特定后缀的文件
可以使用 | 结合正则表达式来忽略多个特定后缀的文件,须要在 .gitignore 文件中使用正则表达式模式,同时要确保 Git 支持正则表达式模式匹配。比方:
*.(log|tmp|bak)
这将忽略所有以 .log、.tmp 或 .bak 结尾的文件。
忽略特定目录下的所有隐藏文件
可以使用 / 结合特定目录和隐藏文件的前缀 . 来忽略特定目录下的所有隐藏文件,比方:
/logs/
.*
这将忽略 logs 目录下的所有隐藏文件。
跨平台使用差别
路径分隔符差别
在 Windows 系统中,路径分隔符是反斜杠 \,而在 Linux 和 macOS 系统中,路径分隔符是正斜杠 /。在 .gitignore 文件中,应该始终使用正斜杠 / 作为路径分隔符,由于 Git 会主动处置惩罚不同系统的路径分隔符差别。比方:
logs/
无论是在 Windows、Linux 照旧 macOS 系统中,这个规则都会精确忽略 logs 目录。
大小写敏感性差别
在 Windows 和 macOS 系统中,文件系统默认是大小写不敏感的,而在 Linux 系统中,文件系统默认是大小写敏感的。这意味着在 .gitignore 文件中,大小写的匹配规则大概会有所不同。比方:
Test.txt
在 Windows 和 macOS 系统中,这个规则会忽略 Test.txt
、test.txt 等文件,而在 Linux 系统中,只会忽略 Test.txt
文件。如果须要在不同系统中保持划一的匹配规则,发起在 .gitignore 文件中使用划一的大小写。
忽略特定前缀的文件
可以使用 * 结合特定前缀来忽略以特定字符串开头的文件,比方:
prefix_*
这将忽略所有以 prefix_ 开头的文件。
忽略特定后缀的文件
除了使用 * 忽略特定后缀的文件,还可以使用 ? 来匹配单个字符,比方:
*.log?
这将忽略所有以 .log 开头,后面跟一个任意字符的文件。
与其他工具集成
与IDE集成
很多集成开辟环境(IDE)可以主动识别 .gitignore 文件,并在文件浏览和搜索中排除被忽略的文件。比方,在IntelliJ IDEA中,被 .gitignore 文件忽略的文件会以灰色体现,而且不会出如今项目搜索结果中。
与持续集成工具集成
在持续集成(CI)环境中,.gitignore 文件可以资助排除不须要的文件,减少构建时间和资源消耗。比方,在Jenkins或GitLab CI/CD中,构建过程会主动遵循 .gitignore 文件的规则,只处置惩罚须要的文件。
更复杂的匹配规则
忽略特定目录下的特定文件
可以使用 / 结合特定目录和文件名来忽略特定目录下的特定文件,比方:
/logs/
*.log 这将忽略 logs 目录下的所有 .log 文件。
忽略特定目录下的所有文件
可以使用 / 结合特定目录来忽略特定目录下的所有文件,比方:
/logs/
这将忽略 logs 目录下的所有文件。
不同项目类型的最佳实践
Python项目
# Byte-compiled / optimized / DLL files
__pycache__/
*.pyc
*.pyo
*.pyd
# C extensions
*.so
# Distribution / packaging
/dist/
/build/
*.egg-info/
# Logs and databases
*.log
*.sql
*.sqlite
# IDEs and editors
.idea/
.vscode/
*.iml
Java项目
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
JavaScript项目
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
nyan-debug.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
.tscache
Go项目
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with "go test -c"
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
C++项目
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Executables
*
更复杂的匹配规则
忽略特定目录下特定后缀的文件
可以使用 / 结合特定目录和后缀来忽略特定目录下特定后缀的文件,比方:
/logs/
*.log 这将忽略 logs 目录下的所有 .log 文件。
忽略特定目录下特定前缀的文件
可以使用 / 结合特定目录和前缀来忽略特定目录下特定前缀的文件,比方:
/logs/
prefix_*
这将忽略 logs 目录下所有以 prefix_ 开头的文件。
忽略特定目录下特定后缀和前缀的文件
可以使用 / 结合特定目录、前缀和后缀来忽略特定目录下特定后缀和前缀的文件,比方:
/logs/
prefix_*
.log 这将忽略 logs 目录下所有以 prefix_ 开头且以 .log 结尾的文件。
以上就是 .gitignore 文件的基本使用指南以及更多特别匹配规则和不同项目类型的最佳实践等内容,希望对你有所资助。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]