Git如何忽略已加入的文件
在使用 Git 的過程中,很多人都會遇到這樣一個問題:
.gitignore 寫好了,但文件還是被提交了?
這是因為——
.gitignore只能忽略“未被 Git 跟蹤的文件”- 已經(jīng)
git add或提交過的文件,不會自動生效
下面從原理 → 正確做法 → 常見場景 → 排坑技巧,一次講清。
一、問題本質(zhì):為什么.gitignore不生效?
Git 中文件有兩種狀態(tài):
- ? 未跟蹤(untracked):
.gitignore生效 - ? 已跟蹤(tracked):
.gitignore不生效
一旦執(zhí)行過:
git add file git commit
這個文件就進入了 Git 的索引(index),
之后再寫 .gitignore,Git 會直接忽略你的忽略規(guī)則。
二、標(biāo)準(zhǔn)解決方案(最常用)
目標(biāo):
- 保留本地文件
- Git 不再跟蹤
- 以后也不會再被提交
Step 1:在.gitignore中添加規(guī)則
例如忽略 config.yaml:
config.yaml
Step 2:從 Git 索引中移除(不刪本地文件)
git rm --cached config.yaml
注意:
--cached非常關(guān)鍵- 不會刪除你磁盤上的文件
Step 3:提交修改
git commit -m "ignore config.yaml"
至此完成 ?
三、忽略整個目錄(日志 / 構(gòu)建產(chǎn)物)
常見場景:
logs/build/dist/node_modules/
.gitignore
logs/ build/
移除索引
git rm -r --cached logs build git commit -m "ignore logs and build directories"
四、已經(jīng)誤加了一堆文件?一口氣清理
如果已經(jīng):
- 提交了
.env - 提交了本地配置
- 提交了構(gòu)建產(chǎn)物
可以用 重建索引法(慎用但非常有效):
git rm -r --cached . git add . git commit -m "reapply .gitignore rules"
這個命令做了什么?
- 清空 Git 索引
- 按新的
.gitignore規(guī)則重新添加 - 本地文件不會丟
五、只想自己忽略,不影響倉庫?
有些文件不想提交,但也不想改 .gitignore(例如 IDE 配置):
使用本地忽略文件
.git/info/exclude
寫法與 .gitignore 完全一致:
.idea/ .vscode/
特點:
- ? 只對你本地生效
- ? 不會提交到倉庫
六、排坑神器:為什么這個文件沒被忽略?
懷疑規(guī)則沒生效時,用這個:
git check-ignore -v config.yaml
輸出會提示:
- 命中了哪條規(guī)則
- 來自哪個 ignore 文件
- 路徑是否正確
這是 高級 Git 使用者必備命令。
七、常見坑位匯總
| 現(xiàn)象 | 原因 |
|---|---|
| .gitignore 不生效 | 文件已被跟蹤 |
| 刪了 .gitignore 仍被忽略 | .git/info/exclude 或全局 ignore |
| CI 還能看到文件 | 已提交到歷史 |
| 新同事 clone 后還有文件 | 歷史里已存在 |
八、如果文件已經(jīng)進了 Git 歷史(敏感信息)
.gitignore 無法刪除歷史記錄。
如果誤提交了:
- token
- key
- 密碼
- 內(nèi)部配置
需要使用:
git filter-repo(推薦)- 或 BFG Repo Cleaner
并且:
- 立刻作廢舊密鑰
- 重新生成憑證
這是安全問題,不只是 Git 問題。
九、總結(jié)一句話
.gitignore 管未來,git rm --cached 處理過去
只要記住這一點,90% 的 Git 忽略問題都能解決。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Typora中l(wèi)atex的用法與常用語法
這篇文章主要介紹了關(guān)于Typora中l(wèi)atex的用法與常用語法,typora使用latex進行公式的編寫,本文說明了常用的語法,需要的朋友可以參考下2023-04-04
解決git誤commit大文件導(dǎo)致不能push問題
這篇文章主要介紹了解決git誤commit大文件導(dǎo)致不能push問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

