删除已经基于.gitignore添加到git存储库中的所有文件



我尝试删除已经添加到git存储库中 exept 文件的所有文件。

我的解决方法是:

  1. 首先,我从git存储库中删除所有文件,
  2. 然后,我添加了.gitignore忽略的文件。

以这种方式,删除了文件,此后立即添加(相同)。这当然是最佳的,而不是最大性能。有更好的解决方案以使这种更优雅吗?

在这里我尝试完成:

Administrator@SL5 MINGW64 /g/global-IntelliSense-everywhere-Nightly-Build (master)
$ git rm -r --cached .
rm 'AHK Studio Download Page.url'
rm 'ActionLists/ActionListNameFilter.inc.ahk'
rm 'ActionLists/ApplicationFrameWindow/ActionListNameFilter.inc.ahk'
Administrator@SL5 MINGW64 /g/global-IntelliSense-everywhere-Nightly-Build (master)
$ git commit -m 'Delete all the stuff'
Administrator@SL5 MINGW64 /g/global-IntelliSense-everywhere-Nightly-Build (master)
$ git rm -r -f .
Administrator@SL5 MINGW64 /g/global-IntelliSense-everywhere-Nightly-Build (master)
$ git commit -m 'Delete all the stuff'

我猜想如果我使用了rm -r -f .而不是rm -r --cached .,我会产生相同的效果。使用rm -r --cached .之后,不幸的是,存储库中仍然存在不应该存在的文件(关于.gitignore)。

git rm -r -f .和commit 推送从git存储库中删除

git ls-files是索引感知文件列表的瑞士武器刀。

git ls-files --exclude-standard -ci 

将列出所有被缓存又名上演的文件,也就是索引的aka,也标记为被auto-add忽略,因此您可以

git ls-files --exclude-standard -ci | git update-index --force-remove --stdin

或也从worktree中删除

git ls-files --exclude-standard -ciz | xargs  -r0 git rm -f 

顺便说一句,我有git config --global alias.ls 'ls-files --exclude-standard,所以对我来说,nuke-em是

git ls -ciz|xargs -r0 rm -f

最新更新