在使用Git时,保持存储库的清洁和有序不仅仅是最佳实践,对于顺畅的协作和高效的版本控制来说至关重要。这就是.gitignore
发挥作用的地方。这个方便的文件告诉Git应忽略哪些文件,防止不必要的混乱,使您的提交专注于真正重要的内容。
没有.gitignore
,您的存储库可能很快就会被临时文件、日志和其他不应该出现在版本控制中的东西填满。更糟糕的是,您可能会意外地分享敏感信息。
在本教程中,您将学习如何创建和使用.gitignore
文件,以保持项目整洁,避免常见陷阱,并更有效地使用Git。让我们开始吧!
.gitignore文件是什么?
.gitignore
文件是Git中使用的配置文件,用于指示版本控制系统在暂存或提交更改时应忽略哪些文件或目录。
它可以防止不必要的文件(如临时文件、系统生成的文件或与构建相关的文件)混淆您的存储库。保持存储库的清洁使协作更容易,并确保只跟踪必要的文件。
.gitignore
文件是一个简单的文本文件,放置在 Git 仓库的根目录中。它包含告诉 Git 忽略哪些文件或目录的模式。这些模式可以根据项目的需求进行定制,帮助您保持一个组织良好的仓库。
对 Git 和 GitHub 感到陌生?通过 这个 GitHub 和 Git 教程 来获得一个适合初学者的版本控制介绍。
以下是一些常见的文件和目录类别,您应该考虑忽略:
- 构建产物:在构建过程中生成的可以从源代码重新创建的文件,比如:
dist/
,build/
(前端和后端构建产物)target/
(Java 和其他编译语言的构建产物)- 依赖项:包管理系统会为安装的库创建目录,这些目录不应被跟踪:
node_modules/
(Node.js)vendor/
(PHP,Composer).venv/
,venv/
(Python 虚拟环境)- 特定系统文件:这些文件是操作系统自动生成的,不对项目有贡献:
.DS_Store
(macOS)Thumbs.db
(Windows)- IDE 配置文件:每个开发者可能使用不同的开发环境,因此他们的个人设置不应包含在版本控制中:
.vscode/
(VS Code).idea/
(JetBrains IDEs).project
,.settings/
(Eclipse)- 日志和临时文件:日志、缓存和临时文件应被忽略,以防止不必要的混乱:
*.log
,npm-debug.log*
,yarn-debug.log*
,yarn-error.log*
(来自各种工具的日志)*.tmp
,*.bak
(临时和备份文件).mypy_cache/
,__pycache__/
(Python 缓存).ipynb_checkpoints/
(Jupyter Notebook 检查点)- 环境和秘密文件:敏感凭据和特定环境的配置不应被提交:
.env
,.env.local
,.env.development
,.env.production
secrets.json
,config.json
(敏感配置文件)- 数据库和存储文件:这些文件在本地生成,不应包含在版本控制中:
*.sqlite
、*.sqlite3
、*.db
(SQLite 数据库文件)dump.rdb
(Redis 数据库转储)- CI/CD 和覆盖文件:测试覆盖报告和其他 CI/CD 工件应被忽略:
coverage/
、*.lcov
(代码覆盖报告).tox/
,.pytest_cache/
(Python 测试文件)
需要安装 Git 吗?请按照我们逐步指南在 这个 Git 安装教程中快速完成设置。
.gitignore 的语法
正如提到的,.gitignore
文件包含与存储库中的文件名匹配的模式,以确定它们是否应被忽略。
基本语法
在核心上,.gitignore
文件由多行组成,每行代表一个要忽略的模式。模式可以匹配:
- 特定文件
- 文件类型
- 目录
该文件还支持注释,可以通过在行首添加 #
来添加注释,并通过空行来提高可读性。
以下是基本结构的概述:
- 忽略特定文件: 您可以直接列出文件名以忽略它。
secrets.txt
- 忽略整个目录:通过在目录名称末尾添加
/
,您可以忽略该目录中的所有内容。
logs/
- 忽略特定类型的所有文件:通配符(
*
)可用于忽略具有特定扩展名的所有文件。
*.py
- 否定:您可以使用
!
来否定一个模式,并明确跟踪某些文件或目录,否则这些文件或目录将被忽略。
*.txt # Ignores all .txt files !readme.txt # Except for readme.txt
如何创建和使用 .gitignore 文件
创建和使用.gitignore
非常简单。在本部分,我将逐步介绍步骤。
创建.gitignore文件
步骤1:导航至存储库的根目录。通常将.gitignore
文件放在Git项目的根目录中。打开您的终端或命令行,并导航至Git存储库的根目录:
cd /path/to/your/repo
步骤2:创建.gitignore文件。在根目录中后,使用任何文本编辑器创建.gitignore
文件或通过在终端中运行命令来创建:
touch .gitignore
步骤 3:向文件添加模式。在文本编辑器中打开.gitignore
文件,并添加必要的模式以忽略文件或目录。每行代表一个不同的模式。
以下是在基本项目中常用的.gitignore
文件示例:
# 忽略 node_modules 和依赖目录 node_modules/ vendor/ # 忽略构建产物 dist/ build/ *.log # 忽略系统生成的文件 .DS_Store Thumbs.db # 忽略环境和机密文件 .env config.json
添加完必要的模式后,请保存文件。当暂存或提交更改时,Git 将自动忽略这些文件。
步骤 4:将文件提交到版本库。将 .gitignore
文件提交到版本库是很重要的,以便所有协作者使用相同的忽略规则。这确保了项目中每个人的一致性。
git add .gitignore git commit -m "Add .gitignore file" git push
一旦 .gitignore
文件被提交,您就为整个团队建立了共享的忽略规则。
想要掌握 Git 中的推送和拉取吗?了解如何在 这个 Git 推送和拉取教程中与远程版本库同步您的工作。
使用 .gitignore 的最佳实践
创建.gitignore
文件是保持干净的Git存储库的基本步骤,但为了确保文件能够长期有效地管理,应遵循一些最佳实践。
使用全局.gitignore
对于跨多个项目工作的开发人员,可能希望从每个存储库中排除特定文件,而不考虑项目类型。
您可以配置一个全局.gitignore文件,而不是将它们添加到每个项目的.gitignore文件中,这样配置的文件将适用于系统上的所有存储库。
配置全局.gitignore文件的方法:
- 创建.gitignore_global文件:
touch ~/.gitignore_global
- 添加要全局忽略的文件模式,例如:
.DS_Store *.log /.vscode/ /.idea/
- 设置 Git 使用全局
.gitignore
:
git config --global core.excludesfile ~/.gitignore_global
利用现有模板
您可以利用预配置的特定语言、框架或环境的 .gitignore
模板,而不是为每个新项目从头开始构建 .gitignore
文件。
这些模板中最好的资源之一是GitHub 的官方 .gitignore 存储库,在这里您可以找到针对数百种编程语言和框架定制的 .gitignore
文件。
定期审查 .gitignore
随着项目的发展,可能需要在.gitignore
文件中包含新文件和目录。定期审查和更新文件以反映项目当前状态非常重要。
可能需要更新.gitignore
文件的一些情况包括:
- 采用生成额外文件的新工具或库(例如,切换到新的构建系统)。
- 重构或重新组织目录,可能会导致应该被排除的新文件。
- 删除已过时的文件或不再属于项目的目录。
排除.gitignore文件中的问题
即使设置了.gitignore
文件,您可能会遇到特定文件被跟踪,或者模式似乎不能按预期工作的情况。本节将涵盖两个常见的故障排除领域以及如何解决它们。
跟踪已提交的文件
.gitignore
文件不会反向应用于已提交的文件。
如果在某些文件已经被提交后向.gitignore
添加模式,则即使它们与.gitignore
文件中的模式匹配,Git仍将继续跟踪它们。
要停止跟踪已经提交的文件,请按照以下步骤进行:
- 从 Git 的跟踪中移除文件: 使用
git rm
命令将其从仓库中移除,同时保留在工作目录中。
git rm --cached <file_or_directory_name>
- 提交更改: 在从 Git 的跟踪中移除文件后,提交更改以确保这些文件不再是版本控制历史的一部分。
git commit -m "Stop tracking ignored files"
- 将更改推送到远程仓库: 最后,将更改推送到远程仓库,以确保这些文件不再被跟踪。
git push
执行完这些步骤后,Git 将停止跟踪这些文件。已提交的文件仍将保留在您的工作目录中,但将根据您的 .gitignore
模式被忽略在未来的提交中。
确保模式正常工作
有时,您可能会注意到本应被忽略的特定文件仍会显示在 Git 的状态中或被跟踪。
请按照以下步骤确保您的 .gitignore
模式正常工作:
- 检查文件状态: 使用
git status
命令查看 Git 正在跟踪的文件。这将帮助您验证您的被忽略文件是否仍在列表中。
git status
- 确保模式正确:仔细检查您的
.gitignore
模式的语法,确保其格式正确。例如: - 确保您使用正确的目录路径(相对于存储库的根目录)。
- 添加
/
以针对特定目录,以防止跟踪所有具有相似名称的文件。
- 刷新缓存:如果您最近更新了
.gitignore
文件,但更改未生效,Git 可能仍然保留其先前的缓存。要刷新缓存,请运行以下命令:
git rm -r --cached . git add . git commit -m "Refresh .gitignore"
- 检查异常:有时,
.gitignore
中的特定模式可能会被文件其他地方的更具体模式覆盖。检查您的规则,确保没有冲突的模式。
寻找一个快速的Git参考?使用这个Git备忘单,可以随时掌握基本命令。
结论
.gitignore
文件可能看起来很小,但在保持Git仓库清洁和可管理方面起着重要作用。通过忽略不必要的文件,如依赖项、构建产物和系统生成的文件,您可以确保项目保持有序,免于混乱。
在本教程中,您已经学会了如何创建一个.gitignore
文件,添加模式,并应用最佳实践,以保持您的存储库高效。有了这些技能,您将避免版本控制方面的麻烦,并使团队中的每个人在合作方面更加顺畅。
如果您希望深入了解Git技能,请查看Git基础知识,以获取一个结构化的学习路径。您还可以探索诸如Git基础和GitHub概念入门等实践课程,构建对版本控制和协作工作流程的扎实理解!