HOWTO · Git
如何删除 Git 中未跟踪的文件
先用 git clean 预览未跟踪文件,再安全地删除文件或目录。了解 -x 和 -X 如何处理被忽略的文件。
本页内容
要从 Git 中删除未跟踪文件,请先运行 git clean -n 预览候选项,确认列表后再运行 git clean -f。如果还要删除未跟踪目录,请加上 -d。git clean 会从工作树中删除文件;对于从未提交或暂存的未跟踪文件,Git 无法将其恢复。
清理前预览未跟踪文件
未跟踪文件存在于工作树中,但尚未添加到 Git 索引,因此不会包含在提交中。运行 git status 查看未跟踪路径;如果未跟踪目录中包含文件,Git 可能只显示该目录。如果想保留某个文件并开始跟踪它,请使用 git add <file>,而不是清理它。
删除任何内容之前,先运行 git clean -n 预览未跟踪文件。选项 -n 会执行试运行:Git 列出将要删除的文件,但不会实际删除。若要在预览中包含未跟踪目录,请运行 git clean -n -d。逐项检查列出的路径;默认情况下不会包含被忽略的文件。
删除未跟踪文件和目录
检查预览结果后,使用 -f 允许删除。下面的独立示例会创建一个临时 Git 仓库,预览一个未跟踪文件,然后将其删除,不会影响当前仓库。从观察到的输出可以看到,先将 notes.txt 列为待删除项,随后确认正在删除该文件。
scratch=$(mktemp -d)
trap 'rm -rf "$scratch"' EXIT
git -C "$scratch" init -q
printf 'temporary file\n' > "$scratch/notes.txt"
LC_ALL=C git -C "$scratch" clean -n
LC_ALL=C git -C "$scratch" clean -f
Would remove notes.txt
Removing notes.txt
在自己的工作树中,使用 git clean -f 删除未跟踪文件,使用 git clean -f -d 删除未跟踪文件和目录。先运行对应的预览命令 git clean -n 或 git clean -n -d,再检查候选项。对于从未提交或暂存的文件,Git 无法撤销删除。
如果只想删除选定的文件,可以用文件管理器删除相应路径,或运行 rm <file> 之类的命令。若要交互式选择候选项,请运行 git clean -i;Git 会显示菜单,而不是一次性删除所有候选项。图形界面客户端也可以显示未跟踪文件,但各应用的标签和删除控件有所不同。
处理被忽略的文件和其他 git clean 选项
通常,Git 不会通过 git clean 删除匹配 .gitignore 规则的文件。被忽略的文件可能包括构建产物、本地配置或仍需使用的数据,因此在将它们纳入清理范围前,请先检查具体内容。
-x会将被忽略的文件与其他未跟踪文件一并纳入。使用git clean -n -d -x预览这个更广的清理范围;只有确定要删除这些候选项时,才运行git clean -f -d -x。-X只选择被忽略的文件。使用git clean -n -d -X预览,然后运行git clean -f -d -X,仅删除被忽略的文件和目录。-d会纳入未跟踪目录;-f允许删除;-n用于预览;-i会打开交互式选择。
如果要广泛清理并包含被忽略的项目及其他未跟踪项目,请选择 -x。如果只想清理被忽略的项目,请选择 -X。运行任一命令前都要检查预览,尤其要确认被忽略的路径中没有需要保留的本地文件。