如果一开始设置 .gitignore 时出错,导致 git 已经在跟踪的文件(例如:缓存文件、配置文件等)存在,那么即使之后修改 .gitignore,已跟踪的文件也不会自动被忽略。
这时可以通过以下步骤解决。

Git中解除不必要的文件跟踪示意图


1. 将想要忽略的文件(或目录)添加到 .gitignore

示例:

# .gitignore
*.log
__pycache__/
.env

2. 解除已跟踪的文件的 跟踪(即让 git 不再跟踪)

例如,如果想让 git 忽略已经提交的 .env 文件,
可以执行以下命令。

git rm --cached .env
  • --cached 选项的作用是 保留本地文件,只解除 git 的跟踪

  • 如果是文件夹(例如:__pycache__/),可以按如下方式操作:

    bash git rm -r --cached __pycache__/


3. 提交更改

git add .gitignore
git commit -m "更新 .gitignore 并移除不需要的跟踪文件"

这样,今后该文件/文件夹将被 git 忽略。
(不过,已经提交的历史记录中仍然存在,但今后不会再被跟踪。)


想要一次性解除多个文件的跟踪?

如果想一次性解除所有添加到 .gitignore 中的文件跟踪,可以像下面这样操作:

git rm -r --cached .
git add .
git commit -m "将 .gitignore 应用到现有文件"
  • 此方法会 重新暂存所有文件,因此要谨慎使用! (确保检查更改,以免提交历史混乱!)

参考/提示

  • 可以通过 git status 确认是否成功应用了未跟踪状态!

  • 对于已经上传到 远程(例如:GitHub)的敏感文件,如果想彻底删除,需要使用 git filter-branchBFG Repo-Cleaner 等单独工具。


希望对因为文件被跟踪而感到困扰的朋友有所帮助。
为了保持 Git 历史的整洁,今天也要再进一步哦!