如何在 Git 中取消文件的跟踪

在使用 Git 进行版本控制时,文件可能最初被跟踪,但随着项目的发展,有时需要取消对这些文件的跟踪。本文介绍如何在不同情况下取消文件或目录的 Git 跟踪。

1. 取消对已经被 Git 跟踪的文件的跟踪

如果某个文件已经添加到 Git 并被提交,但现在不希望 Git 继续跟踪它,同时保留本地文件,可以按照以下步骤操作:

1.1 将文件添加到 .gitignore

首先,将不希望继续跟踪的文件路径添加到项目的 .gitignore 文件中。例如,要忽略 config/settings.json 文件,在 .gitignore 中添加:

config/settings.json
  • 1.
1.2 使用 git rm --cached 命令取消文件跟踪

接着,使用 git rm --cached 命令移除对该文件的跟踪。此命令会将文件从 Git 的索引中删除,但不会删除本地文件。执行以下命令:

git rm --cached config/settings.json
  • 1.
1.3 提交更改

将更改提交到仓库:

git commit -m "Stop tracking config/settings.json"
  • 1.

通过上述操作,Git 将不再跟踪该文件,且本地文件不会被删除。

2. 取消对整个目录的跟踪

如果不希望 Git 继续跟踪某个目录中的所有文件,可以按照以下步骤操作:

2.1 将目录添加到 .gitignore

将要忽略的目录路径添加到 .gitignore 文件中,例如:

logs/
  • 1.

这样可以忽略 logs 目录中的所有文件。

2.2 使用 git rm -r --cached 命令取消目录跟踪

使用 git rm -r --cached 命令取消对整个目录的跟踪。此命令会递归地将目录及其所有文件从 Git 的索引中移除。执行以下命令:

git rm -r --cached logs/
  • 1.
2.3 提交更改

将更改提交到仓库:

git commit -m "Stop tracking logs directory"
  • 1.

通过这一步,Git 将不再跟踪 logs 目录中的所有文件,但它们会保留在本地文件系统中。

3. 忽略未来的文件更改

如果不想完全停止跟踪某个文件,而是希望 Git 忽略它的未来改动,可以使用 git update-index 命令。

3.1 使用 git update-index --assume-unchanged 忽略更改

要让 Git 忽略某个文件的改动,可以使用以下命令:

git update-index --assume-unchanged <file>
  • 1.

例如:

git update-index --assume-unchanged config/settings.json
  • 1.

此命令告诉 Git 假定该文件未被修改,即使文件发生了更改,Git 也不会提示该文件有未提交的变动。

3.2 恢复文件的跟踪

如果之后需要恢复对该文件的正常跟踪,可以使用以下命令:

git update-index --no-assume-unchanged <file>
  • 1.

结语

在 Git 中取消文件或目录的跟踪是一个常见需求。无论是完全停止对某个文件或目录的跟踪,还是临时忽略文件的改动,都可以通过简单的命令实现。这些方法可以帮助更灵活地管理 Git 仓库中的文件跟踪情况。