first-contributions 仓库实战:.gitignore 文件完全指南——从基本语法到全局配置与取消文件跟踪 first-contributions 仓库实战.gitignore 文件完全指南——从基本语法到全局配置与取消文件跟踪【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions本文以开源新手入门项目 first-contributions 仓库内的附加学习材料为骨架系统讲解 Git 中.gitignore文件的作用、编写语法、全局配置方法与取消跟踪已提交文件的完整流程。读完本文你将能独立为任意项目编写一份安全、干净、可复用的.gitignore文件并正确处理文件已被提交后才想起忽略这一高频实战场景。一、理解 .gitignoreGit 工作流中的忽略清单.gitignore文件是 Git 工作流中不可或缺的组成部分。它是一个纯文本文件位于仓库根目录也可位于任意子目录作用于该目录及以下其作用只有一个告诉 Git 哪些文件和文件夹应当被忽略从而阻止不必要或敏感的数据被追踪track进仓库。在 first-contributions 仓库中根目录就放置了一份真实的 .gitignore 文件它拦截了.DS_Store、.idea/、.vscode、.env、node_modules/等一大批常见噪声文件——这正是本仓库官方推荐初学者观摩学习的真实范例。其英文原版教程位于 docs/additional-material/git_workflow_scenarios/creating-a-gitignore-file.md本孟加拉语译文见 docs/additional-material/translations/Bengali/creating-gitignore-file-bn.md中文版本见 docs/additional-material/translations/Chinese/creating-a-gitignore-file.zh-cn.md。二、为什么要使用 .gitignore版本控制系统应当只追踪对项目有价值、可被其他协作者复用的源文件。以下类型的文件不应纳入版本控制临时文件或系统生成文件例如缓存、构建产物、日志cache、build files、logs可重新安装的大型依赖例如node_modules执行包管理器命令即可完整恢复无需入库个人或敏感配置文件例如 API 密钥、环境变量文件.envIDE 或编辑器专属文件例如.vscode/、.idea/。忽略这些文件能带来三重收益保持仓库干净提交记录里只有有意义的变更、减少合并冲突每台机器上因人而异的本地文件不会进入 diff、防止安全风险密钥与凭据不会随仓库泄露。三、创建 .gitignore 文件三步走在项目根目录创建一个名为.gitignore的新文本文件注意文件名以点开头且没有任何扩展名在文件中逐行列出你想要忽略的文件和文件夹每行一条规则保存文件。保存后Git 会立即在git status、git add等命令中应用这些规则被匹配的文件将不再出现在待暂存列表中。可以参考本仓库根目录的 .gitignore 观察真实项目的写法。基本语法三个核心符号符号含义示例*通配符匹配多个文件*.log匹配所有以.log结尾的文件/指定相对于.gitignore所在位置的路径build/忽略build目录#注释行# Ignore Mac system files完整示例 .gitignore 文件# 忽略 Mac 系统文件 .DS_Store # 忽略依赖文件夹 node_modules/ venv/ # 忽略日志与缓存文件 *.log .cache/ # 忽略环境变量文件 .env # 忽略所有文本文件 *.txt提示示例末尾的*.txt说明.gitignore的规则可以非常宽泛——如果你希望忽略所有文本文件一个通配符即可做到。进阶语法从仓库根 .gitignore 学到的实战模式first-contributions 仓库根目录的 .gitignore 展示了三个示例中未提及、但生产项目中几乎必用的进阶模式字符类[Dd]ebug/同时匹配Debug/与debug/解决不同平台/习惯下大小写不一致的问题否定模式!先忽略再放行例如.vscode/*忽略整个 VS Code 目录后用!.vscode/settings.json仅保留关键配置文件入库见 .gitignore 第 370-374 行目录级忽略**/如**/[Pp]ackages/*递归匹配任意层级下的packages目录。这些语法与*、/、#完全兼容可以组合使用写出表达力极强的忽略规则。四、全局 .gitignore让规则对所有仓库生效有时你会希望某些规则如.DS_Store、编辑器临时文件在所有仓库中都生效而不是每个项目重复编写。Git 提供了全局排除文件机制git config --global core.excludesfile ~/.gitignore_global执行后Git 会创建~/.gitignore_global文件并把它注册为全局排除规则文件。之后你编辑该文件的方式与编辑本地.gitignore完全相同——其中列出的文件与文件夹将在你机器上的所有Git 仓库中被忽略。需要说明的是git config --global是一种仓库级无关的全局配置写入方式它会把配置写入用户级配置文件与仓库内配置互不干扰关于全局、仓库级、命令行级配置的优先级关系可参考配套教程 configuring-git.md命令行级 仓库级 全局级。五、取消跟踪处理已提交文件的正确姿势.gitignore只对尚未被跟踪的文件生效。如果一个文件在被加入.gitignore之前已经被git commit提交那么把它写进.gitignore并不会让它消失——它仍然留在 Git 的跟踪列表里。此时需要显式地把它从跟踪中移除。取消跟踪单个文件保留本地副本git rm --cached filename--cached是关键参数它只把文件从 Git 索引暂存区中移除不会删除工作区中的本地文件你仍然可以继续使用它只是它不再被版本控制追踪。一次性取消跟踪所有已被忽略的文件如果你刚刚给项目补上了一份完整的.gitignore更高效的做法是一次性把当前索引中的所有文件全部移出跟踪再重新按新规则加入git rm -r --cached . git add . git commit -m Updated .gitignore命令分解git rm -r --cached .递归地把当前目录下所有文件从索引移除-r处理子目录.表示整个仓库git add .按照新的.gitignore规则重新将所有应跟踪的文件加入索引被忽略的文件将不会被加入git commit -m Updated .gitignore提交这次重新梳理跟踪范围的变更。执行完成后之前被误跟踪的构建产物、日志、密钥文件等就会从仓库历史之外的当前跟踪状态中彻底消失注意历史提交中仍保留旧记录若需从历史中抹除敏感信息属于更深层的改写历史操作不在本文范围。撤销 git rm --cached如果操作失误想要撤销取消跟踪、让文件重新回到跟踪状态只需把文件重新加入索引git add filenamegit add会把文件重新放回暂存区Git 将恢复对该文件的跟踪。六、最佳实践小结把.gitignore视作项目的一部分在第一次提交时就创建好避免事后处理已跟踪文件的麻烦全局忽略文件只放通用噪声如.DS_Store、编辑器临时文件项目特有的规则放仓库内.gitignore随仓库分发给协作者敏感文件.env、密钥务必尽早忽略一旦提交并推送即使删除也仍保留在历史记录中属于安全事件参考本仓库根目录的 .gitignore 与官方教程 creating-a-gitignore-file.md可以快速掌握从入门到进阶的全部规则写法。现在你可以打开任意一个 Git 项目按照本文的步骤创建自己的.gitignore用git status验证忽略效果并在需要时用git rm --cached优雅地清理已跟踪的文件。【免费下载链接】first-contributions✨ Help beginners to contribute to open source projects项目地址: https://gitcode.com/gh_mirrors/fi/first-contributions创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考