跳至正文

如何让.gitignore 的新增目录规则生效?

假设一个 Git 仓库中有个 a 目录,这个 a 目录原来已经被提交到仓库,后来因某种原因,希望从仓库中排除,即希望 Git 不再跟踪 a 目录的变化。那么只把 a 目录添加到 .gitignore 文件是不起作用的,还需执行以下两个关键步骤:

第一步:从 Git 版本控制中移除 a 目录(但保留本地文件)

由于 a 目录之前已经被 Git 跟踪,即使现在添加到 .gitignore,Git 仍会继续跟踪它的变化。必须先将它从 Git 的索引(暂存区)中删除。

打开终端,进入仓库根目录,执行:

git rm -r --cached a
  • -r:递归删除目录及其内容。
  • --cached:只从 Git 索引中移除,保留本地工作区的文件。

第二步:提交更改

将这次修改提交到仓库:

git commit -m "停止跟踪 a 目录,并将其加入 .gitignore"

重要说明

这个操作不会删除你本地工作区中的 a 目录及其文件,只会让 Git 不再跟踪它。

如果其他人拉取了这次提交,他们的本地仓库中的 a 目录不会被自动删除,但后续任何修改都不会被 Git 识别。如果他们也需要彻底停止跟踪,可以在自己的仓库中执行相同的 git rm --cached 命令。

历史提交中依然保留着 a 目录的所有版本记录,这是正常的,因为 Git 不会重写历史。

从此以后,对 a 目录的任何新增、修改、删除,Git 都会忽略(不会显示在 git status 中,也不会被提交)。

在 .gitignore 文件中添加 a 目录的常见写法有:

  • a/ #仅匹配名为 a 的目录(推荐)
  • a #匹配任何名为 a 的文件或目录
    建议使用 a/ 明确只匹配目录。
标签:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注