git:删除所有跟踪的文件?

Ili*_*rim 14 git home-directory

我有一个包含 git repo 的目录以及我不想跟踪的其他不相关文件(它是我的主目录,对不起,如果这是不好的做法 - 欢迎对版本控制 bash 配置文件和 vim 文件的替代建议!)

我可以很容易地删除 .git 目录,但这会在我的目录中留下所有被跟踪的文件。如何删除所有跟踪的文件,以便我可以完全删除 git repo 及其相关文件,有效地“取消克隆”或“卸载”?

此外,在删除这些文件后,如何删除曾经包含跟踪文件但现在为空的任何目录?

相关(相反的问题):Git:如何删除所有未跟踪的文件

小智 17

对于文件,您可能希望将命令行稍微更改为 git-rm 页面上建议的命令行

git ls-files -z | xargs -0 rm -f
Run Code Online (Sandbox Code Playgroud)

这对于更复杂的文件路径更安全。对于目录,您可以尝试类似的策略:

git ls-tree --name-only -d -r -z HEAD | sort -rz | xargs -0 rmdir 
Run Code Online (Sandbox Code Playgroud)

但是,这取决于您希望如何处理包含未跟踪文件(通常是 gitignored)的目录。上面的命令行应该保留这些文件及其目录。

但是,无论内容如何,​​更改它以删除目录都很容易。