我尝试删除已经添加到git存储库的所有文件,除了.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 + push从git存储库中删除所有内容
git ls-files
是索引感知文件列表的瑞士军刀。
git ls-files --exclude-standard -ci
将列出每个缓存的文件,即已暂存,也称为索引,也称为已跟踪,并且还标记为自动添加,因此您可以
git ls-files --exclude-standard -ci | git update-index --force-remove --stdin
或者也从工作区中删除
git ls-files --exclude-standard -ciz | xargs -r0 git rm -f
顺便说一句,我有git config --global alias.ls 'ls-files --exclude-standard
,所以对我来说核武器是
git ls -ciz|xargs -r0 rm -f