CB *_*ley 51
重置索引很便宜,所以
git rm -rf .
git clean -fxd
Run Code Online (Sandbox Code Playgroud)
然后你可以重置索引(带git reset)或直接检查一个新的分支.
P̲̳*_*͓L̳ 16
使用find和prune选项.
find . -path ./.git -prune -o -exec rm -rf {} \; 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
.git和dist
find . -path ./.git -prune -o \( \! -path ./dist \) -exec rm -rf {} \; 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
cin*_*ada 12
正如Crayon在评论中提到的那样,简单的解决方案就是将.git移出目录,删除所有内容,然后将其移回.但如果你想以奇特的方式做到这一点,那就find得到了回报:
find -not -path "./.git/*" -not -name ".git" | grep git
find -not -path "./.git/*" -not -name ".git" -delete
Run Code Online (Sandbox Code Playgroud)
我放在那里的第一行是因为find在运行之前,我总是想仔细检查以确保它找到了我认为的内容-delete.
编辑:有一个脑死亡的时刻,不只是从我的终端复制.
Edit2:添加-not -name ".git",这使它不会尝试删除.git目录,并抑制错误.根据find尝试删除内容的顺序,它可能会在非空目录上失败.
一种方法是使用rm -rf *,它将删除该文件夹中除dotfile和dotfolder之类的所有文件.git。然后,您可以一个一个地删除点文件和点文件夹,这样您就不会错过重要的点文件,例如.gitignore,.gitattributes更高版本。
另一种方法是将.git文件夹移出目录,然后返回并删除该文件夹的所有内容,然后将文件夹移.git回。
mv .git/ ../
cd ..
rm -rf folder/*
mv .git/ folder/
cd folder
Run Code Online (Sandbox Code Playgroud)