删除 git 存储库中所有应忽略的已提交文件

删除 git 存储库中所有应忽略的已提交文件

我最近启动了一个 git 存储库,但忘记添加.gitignore文件。在我最初提交之后,我的存储库有许多子目录和许多应该被忽略的文件。有没有一种有效的方法来添加.gitignore然后推送存储库,而无需将文件忽略到 GitLab 或 GitHub 等工具?

答案1

如果您不介意删除工作目录中所有被忽略的文件,以下命令将暂存所有已提交但被忽略的文件以供删除:

find . -print0 | git check-ignore -z --stdin --no-index | xargs -0 git rm -f -r --cached --ignore-unmatch --

(假设 GNUfind和最近的足够gitgit check-ignore它还将删除任何其他被忽略的文件或目录。

这会列出从当前目录开始的所有文件和目录,检查它们是否被忽略(即使它们已提交),并删除它们,无论它们是否已提交、未跟踪等。

这适用于.gitignore树中的任何文件(甚至git配置中的其他位置)。

跟进并提交变更;由于更改是新的提交,因此您不需要强制推送任何内容。重写历史记录以删除对假定被忽略的文件的所有引用是一项稍微复杂的任务。

相关内容