ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

git 忽略指定路径与临时文件:一份可复制的 .gitignore 配置骨架

git 忽略指定路径与临时文件:一份可复制的 .gitignore 配置骨架 1. 多人协作里最烦的不是冲突是临时文件被提交你有没有遇到过这种场景早上拉完代码git status一看冒出来一堆.vscode/、build/、data/、*.log明明自己没改业务代码却要在一堆噪音里找真正的改动。更糟的是某位同事手快git add .之后直接提交把本地调试用的临时文件、编译产物、甚至带密钥的配置文件一起推到了远端。后面的人每次拉代码都要被这些文件干扰review 的时候还得从几百行 diff 里挑出真正的逻辑改动。这个问题的根源不是 git 不好用而是仓库缺少一份清晰的忽略规则。.gitignore就是干这个的它告诉 git 哪些路径、哪些后缀、哪些目录不需要纳入版本管理。写好它git status会干净很多协作时也不会再被临时文件刷屏。这篇内容面向正在用 git 做多人协作、但仓库里还混着构建产物和临时文件的同学。我会给出一份可以直接复制的.gitignore配置骨架按路径、按后缀、按目录三种维度组织规则然后演示git check-ignore怎么验证规则是否生效最后用git rm --cached把已经被跟踪的临时文件从索引里清出去。整套动作落地到你自己仓库大概十分钟。2. 前置准备TaoToken 与本地 git 环境在动手改.gitignore之前先把两件事准备好一个是本地 git 环境另一个是后续如果要跑模型辅助排查或生成规则时用到的 TaoToken。本地环境确认很简单终端里执行git --version能输出版本号即可建议 2.30 以上git check-ignore和git rm --cached的行为在这些版本里比较稳定。TaoToken 这边官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。如果你打算用模型对话来帮你根据项目类型生成.gitignore骨架可以走模型对话入口如果是要在编辑器或 Agent 里长期做编码辅助走 Coding Plan 更合适。密钥管理在 console 的 API Keys 页面接入细节看接入文档。这里要说明一点.gitignore本身是纯文本规则不依赖任何外部服务。TaoToken 在这里的角色是辅助你生成和检查规则比如你把项目结构贴给模型让它帮你补全容易漏掉的忽略项。真正生效的还是仓库根目录那个.gitignore文件。3. 可复制的 .gitignore 配置骨架下面这份骨架按三种维度组织按目录、按后缀、按路径。你可以直接复制到项目根目录的.gitignore再按自己项目删减。# 按目录忽略 # 编辑器与 IDE .vscode/ .idea/ *.swp # 依赖与构建产物 node_modules/ dist/ build/ out/ target/ __pycache__/ *.egg-info/ # 本地数据与缓存 data/ cache/ tmp/ logs/ # 按后缀忽略 # 日志与临时文件 *.log *.tmp *.bak *.swp *~ # 编译产物 *.o *.obj *.class *.pyc *.pyo # 环境与密钥重点 .env .env.local *.pem *.key # 系统文件 .DS_Store Thumbs.db # 按路径忽略 # 只忽略根目录下的 config不忽略子目录同名文件 /config/local.yaml # 忽略某目录下所有测试快照 tests/snapshots/ # 忽略 docs 下的草稿但保留正式文档 docs/draft/几个容易踩的点值得单独说。第一build/这种写法会匹配任意层级的 build 目录如果你只想忽略根目录的 build要写成/build/前面加斜杠表示从仓库根开始匹配。第二data/会忽略所有叫 data 的目录如果项目里有个src/data/是必须提交的源码数据就得改成/data/或者用!src/data/做反向排除。第三.env这类密钥文件一定要进忽略列表这是协作安全的基本盘。反向排除的写法是这样# 忽略所有 .log但保留重要的 build.log *.log !build.log注意!排除规则要放在对应忽略规则之后顺序反了不生效。4. 验证规则git check-ignore 与 git rm --cached规则写完不代表生效得验证。git 提供了git check-ignore专门干这个。假设你刚写完.gitignore想确认build/app.js是否被忽略执行git check-ignore -v build/app.js-v会输出是哪条规则命中了这个文件类似.gitignore:6:build/ build/app.js这说明第 6 行的build/规则生效了。如果命令没有任何输出说明这个文件没有被忽略需要回去检查规则写法。批量验证可以用git check-ignore -v .vscode/settings.json data/raw.csv app.log三个文件各自的命中规则会逐行列出一眼就能看出哪条规则没写对。接下来处理已经踩坑的情况临时文件已经被提交进仓库了。这时候光加.gitignore没用因为 git 对已跟踪文件不生效。需要先用git rm --cached把它从索引里移除但保留本地文件。# 移除单个已跟踪的临时文件 git rm --cached app.log # 移除整个已跟踪目录-r 递归 git rm --cached -r build/ # 批量移除配合 .gitignore 里已写的规则 git rm --cached -r --ignore-unmatch .vscode/ data/--cached的意思是只动索引不动工作区文件你本地的build/和data/还在。--ignore-unmatch是防止某个路径本来就没被跟踪时报错中断。执行完之后git status你会看到这些文件变成了deleted状态从索引删除然后正常提交git commit -m chore: 移除已跟踪的临时文件并补充 .gitignore提交后这些文件就彻底从版本管理里出去了本地文件不受影响。5. 本篇常见错排查规则写了但不生效。最常见的原因是文件已经被跟踪。.gitignore只对未跟踪文件生效已跟踪的必须走git rm --cached。用git ls-files build/可以确认某个路径是否还在索引里。build/和/build/混用。前者匹配任意层级后者只匹配根目录。多人协作时如果子模块里也有 build 目录用/build/更精确避免误伤。反向排除不生效。!规则必须放在对应忽略规则之后而且如果父目录被忽略了子文件的排除规则不会生效。比如data/被忽略后!data/keep.csv是无效的得改成先不忽略目录再排除文件。.env没进忽略列表。这是安全问题不是功能问题。检查一遍.gitignore里有没有.env、*.pem、*.key有的话确认规则拼写正确。git check-ignore没输出但文件确实没被跟踪。可能文件在.git/info/exclude里被忽略了或者全局 gitignore 配置里有规则。用git check-ignore -v --no-index file可以绕过索引检查。Windows 和 macOS 换行符差异导致规则失效。.gitignore建议用 LF 换行如果团队里有人用 CRLF 保存规则可能匹配不上。可以在.gitattributes里统一.gitignore text eollf6. 把忽略规则沉淀成团队约定.gitignore写一次不够多人协作里它会随着项目演进不断补充。建议把它当成团队约定的一部分新成员入职时先确认.gitignore已覆盖本地环境文件代码 review 时如果发现有人提交了临时文件顺手补一条规则。如果你想让模型帮你根据项目语言和框架生成更完整的忽略骨架可以把目录结构贴到模型对话里让它按你的技术栈补全。长期做编码辅助的话Coding Plan 里可以持续维护这类规则文件。密钥和接入配置在 console 的 API Keys 页面管理具体接入方式参考接入文档。最后留一个实用习惯每次git add .之前先跑一遍git status看到不该出现的文件就补规则而不是提交后再回滚。这个动作坚持几次仓库就会一直保持干净。
返回列表