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


当前回答

感谢你的回答,我能够写下这个小单行来改进它。我在.gitignore和repo上运行了它,没有任何问题,但如果有人看到任何明显的问题,请评论。这应该是git rm-r--cached from.gitignore:

cat $(git rev-parse --show-toplevel)/.gitIgnore | sed "s/\/$//" | grep -v "^#" | xargs -L 1 -I {} find $(git rev-parse --show-toplevel) -name "{}" | xargs -L 1 git rm -r --cached

注意,你会得到很多致命的错误:pathspec“<pathspec>”与任何文件都不匹配。这只是针对尚未修改的文件。

其他回答

要从跟踪中删除几个特定文件,请执行以下操作:

git update-index --assume-unchanged path/to/file

如果您想再次开始跟踪它:

git update-index --no-assume-unchanged path/to/file                      

对于像我这样的迟钝的人,还有一个建议:)将.gitignore文件放到存储库根目录中,而不是放到.git文件夹中。干杯

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

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

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

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

我不太清楚“回答”命令是什么意思,所以我运行了它,这让我非常沮丧。它递归地从git repo中删除每个文件。

Stackoverflow救援。。。如何还原“git rm-r”?

git reset HEAD

做到了这一点,因为我有未提交的本地文件,我不想覆盖这些文件。

如果文件已经在版本控制中,则需要手动删除它们。