我有一个已经初始化的Git存储库,我添加了一个.gitignore文件。我如何刷新文件索引,以便忽略我想要忽略的文件?


当前回答

复杂的答案无处不在!

只需使用以下内容

git rm -r --cached .

它将从源文件中删除您试图忽略的文件,而不是从计算机上的主文件中删除!

之后,只需提交并推送!

其他回答

如果.gitignore似乎没有忽略未跟踪的文件,还需要记住的一点是,您不应该在忽略的行上有注释。所以这没关系

# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*

但这行不通:

foo*   # ignore all foo.txt, foo.markdown, foo.dat, etc.

.gitignore将后一种情况解释为“忽略名为“foo*#忽略所有foo.txt、foo.markdown、foo.dat等”的文件,当然,您没有。

如果需要停止跟踪大量被忽略的文件,可以组合一些命令:

git ls files-i--排除标准|xargs-L1 git rm--缓存

这将停止跟踪被忽略的文件。如果您想从文件系统中删除文件,请不要使用--cached选项。您还可以指定文件夹来限制搜索,例如:

git-ls文件-i--排除标准--${FOLDER}| xargs-L1 git rm

是的。gitignore系统只忽略当前不受git版本控制的文件。

也就是说,如果您已经使用gitadd添加了一个名为test.txt的文件,那么将test.txt添加到.gitignore仍然会导致跟踪对test.txt的更改。

您必须首先获取rm test.txt并提交更改。只有这样,才会忽略对test.txt的更改。

要取消跟踪已添加/初始化到存储库的文件,即停止跟踪该文件,但不从系统中删除它,请使用:gitrm--缓存文件名

正如dav_i所说,为了将文件保存在repo中,并在不创建额外提交的情况下将其从更改中删除,您可以使用:

git update-index --assume-unchanged filename