从仓库中删除已跟踪的但被忽略的文件,但本地不删除。

4
我经常遇到这种情况:我们团队中的某个人在没有添加.gitignore文件的情况下推送了一个初始提交。这导致许多我们不想跟踪的文件出现在仓库中。
使用命令:git ls-files -i --exclude-from=.gitignore
可以给我列出由.gitignore忽略的文件列表;
使用命令:git rm --cached <file>
可以让我从仓库中一次删除一个文件,但仍然保留它们在我的工作目录中(这是我想要的)。
有没有一种方法可以将ls-files命令的文件列表输出输入到rm --cached中(或者其他完全不同的方法),以允许我删除已跟踪但被.gitignore忽略的文件?
我们团队中的一位成员编写了一个使用正则表达式的shell脚本来解决这个问题,但我正在寻找一个仅使用命令行的解决方案(如果有的话)。
1个回答

5

第一行对我有效。管道解决方案给了我一个致命错误:“fatal: pathspec 'path/to/file1 path/to/file2' did not match any files”。 - WNRosenberg
第二个命令可能会失败,因为第一个命令已成功;那些文件不再在存储库中,因此在尝试删除不存在的文件时引发了错误。 - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接