如何让Git“忘记”已跟踪但现在位于.gitignore中的文件?

2024-04-19 22:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个文件正在被git跟踪,但现在该文件在.gitignore列表中。

但是,该文件在编辑后会一直显示在git status中。你如何强迫git完全忘记它?


Tags: 文件git编辑列表statusgitignore
3条回答

git update index为我做这项工作:

git update-index --assume-unchanged <file>

注意:此解决方案实际上独立于.gitignore,因为gitignore仅用于未跟踪的文件。

编辑:自发布此答复后,已创建了一个新选项,应首选该选项。您应该使用--skip-worktree来检查用户不想再提交的已修改的跟踪文件,并保留--assume-unchanged以提高性能,以防止git检查大型跟踪文件的状态。有关详细信息,请参见https://stackoverflow.com/a/13631525/717372。。。

git update-index --skip-worktree <file>

下面的一系列命令将从Git索引(而不是从工作目录或本地repo)中删除所有项,然后更新Git索引,同时忽略Git。PS.Index=缓存

首先:

git rm -r --cached . 
git add .

然后:

git commit -am "Remove ignored files"

或一行:

git rm -r --cached . && git add . && git commit -am "Remove ignored files"

.gitignore将阻止未跟踪的文件被添加(没有add -f)到git跟踪的文件集中,但是git将继续跟踪任何已经被跟踪的文件。

要停止跟踪文件,需要将其从索引中删除。这可以通过这个命令来实现。

git rm --cached <file>

如果要删除整个文件夹,则需要递归删除其中的所有文件。

git rm -r --cached <folder>

下一次提交时将从head revision中删除文件。

警告:虽然这不会从本地删除物理文件,但它将从下一个git pull上的其他开发人员计算机中删除这些文件。

相关问题 更多 >