根据 .gitignore 删除所有已添加到 git 存储库的文件
Delete all files already added to git repository based on .gitignore
我尝试删除所有已添加到 git 存储库的文件 exept 未被 .gitignore
忽略的文件
我的解决方法是:
- 首先,我从 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 .
后,不幸的是,存储库中仍然存在不应该存在的文件(关于 .git 忽略)。
git rm -r -f .
并且提交+推送会从 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
我尝试删除所有已添加到 git 存储库的文件 exept 未被 .gitignore
忽略的文件我的解决方法是:
- 首先,我从 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 .
后,不幸的是,存储库中仍然存在不应该存在的文件(关于 .git 忽略)。
git rm -r -f .
并且提交+推送会从 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