1. 简介

我们知道,.gitignore 文件的作用是防止未追踪的新文件被加入 Git 的索引中。⚠️但需要注意的是,如果某个文件已经被 Git 跟踪,那么即使将其加入 .gitignore,Git 依然会继续追踪它。

本文将介绍几种方法,帮助你在将文件加入 .gitignore 后,从 Git 索引中彻底移除这些已追踪的文件

2. 移除单个文件

要移除单个文件,首先需要将该文件名添加到 .gitignore 文件中,然后执行以下命令:

git rm --cached <filename>
git commit -m "<提交信息>"

git rm --cached <filename>:从索引中移除文件,但保留本地文件
git commit:提交更改

⚠️ 注意:这个操作不会删除你本地的物理文件,只是让 Git 不再追踪它。

3. 移除整个目录

如果你需要移除一个目录及其内容,同样要先在 .gitignore 中添加该目录名称,然后使用 -r 参数递归删除:

git rm --cached -r <folder>
git commit -m "<提交信息>"

-r 表示递归操作,用于删除目录及其中所有文件
❌ 如果不加 -r,Git 会报错:

fatal: not removing 'folder' recursively without -r.

4. 移除所有被 .gitignore 忽略的文件

如果你想一次性移除所有当前被 .gitignore 忽略的文件,可以使用以下命令组合:

git rm -r --cached .
git add .
git commit -m "移除所有 .gitignore 中定义的文件和目录"

✅ 第一条命令:清空当前所有文件的索引
✅ 第二条命令:重新添加所有文件,但忽略 .gitignore 中定义的内容
✅ 第三条命令:提交更改

⚠️ 这个操作会影响整个项目结构,执行前请确认 .gitignore 文件内容无误。

5. 小结

本文介绍了三种常见的方法来移除 Git 中已被追踪的文件:

  1. 移除单个文件
  2. 移除整个目录
  3. 一次性移除所有被 .gitignore 忽略的文件

📌 关键点提醒

  • 这些操作不会删除你本地的物理文件
  • 但其他开发者在拉取更新后,这些文件将从他们的 Git 索引中被删除
  • 因此,执行这些操作前请务必确认影响范围,避免误操作导致协作问题

如有需要,可将此文章集合作为日后 Git 操作的参考指南。


原始标题:Removing Tracked Files With .gitignore