从存储库中删除跟踪的已点火文件,但不在本地删除

WNR*_*erg 4 git gitignore

我一直遇到这样的情况:我们团队中的某人在不首先向其项目中添加.gitignore的情况下推动了一次初始提交。这导致一堆文件最终存储在我们不想跟踪的存储库中。

git ls-files -i --exclude-from=.gitignore
给我列出了.gitignore忽略的文件的列表

git rm --cached <file>
让我一次从存储库中删除一个文件,但将它们保留在我的工作目录中(我想要的)

有没有一种方法可以将文件列表从ls-files传送到rm --cached (或完全允许我从存储库中删除跟踪的,忽略的文件的其他方法)?

我们的一个团队成员编写了一个使用正则表达式的shell脚本,但我正在寻找仅命令行解决方案(如果存在)。

Von*_*onC 5

你可以试试:

git rm --cached $(git ls-files -i --exclude-from=.gitignore)
Run Code Online (Sandbox Code Playgroud)

(遵循与“ git删除已删除的文件 ”或“ git:如何添加/提交通过香草rm进行的删除? ”或“ 从Git存储库中删除多个文件的想法相同的想法” 已从磁盘 “)中删除

或者:一个简单的管道也可以工作:

git ls-files -i --exclude-from=.gitignore | xargs -0 git rm --cached
Run Code Online (Sandbox Code Playgroud)