协慌网

登录 贡献 社区

忽略已提交到 Git 存储库的文件

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

答案

要解压缩已经添加 / 初始化到存储库的单个文件, 停止跟踪文件但不从系统中删除它: git rm --cached filename

要解开现在位于.gitignore 每个文件:

首先提交任何未完成的代码更改 ,然后运行以下命令:

git rm -r --cached .

这将从索引 (暂存区域)中删除所有已更改的文件,然后运行:

git add .

承诺:

git commit -m ".gitignore is now working"

要撤消git rm --cached filename ,请使用git add filename

确保在运行git add .之前提交所有重要更改git add .否则,您将丢失对其他文件的任何更改。

如果您试图忽略对已在存储库中跟踪的文件的更改(例如,您需要为本地环境更改的 dev.properties 文件,但您永远不想检查这些更改),而不是您想要执行的操作是:

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

如果您想再次开始跟踪更改

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

请参阅git-update-index(1)手册页

如果你需要这个选项来保持 git-reset( 通过 ),请查看 update-index 的skip-worktreeno-skip-worktree选项。


更新:由于人们一直在询问,这里有一个方便的(以及下面评论的更新)别名,用于查看当前工作区中当前 “忽略”( - 保持不变)的文件

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

要取消已经添加 / 初始化到存储库的文件,即停止跟踪文件但不从系统中删除它: git rm --cached filename