如果我重命名一些目录,然后提交并推送到原点,然后从另一台计算机中提取,我会发现旧目录和新目录。在旧目录中会有一些被忽略的文件。如何删除所有这些未跟踪的目录,而不触及任何已跟踪目录中的任何文件(已跟踪或未跟踪)。
(“跟踪目录”是指一个目录,其中至少包含一个跟踪文件。)
尝试这个:
git clean -d -fx
-d:告诉 git clean 你还想删除任何未跟踪的目录,默认情况下它会忽略目录。
-f:强制选项启动从当前目录中实际删除未跟踪文件。
-x:告诉 git clean 也包括任何被忽略的文件。
你可能会追求git clean -X
.
来自git-scm
-X
仅删除 Git 忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件。
这是一个示例,其中包含一个跟踪文件、一个未处理文件和一个忽略文件。
$ ls
x.txt y.txt z.txt
$ cat .gitignore
y.txt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
z.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git clean -X --dry-run
Would remove y.txt
$ git clean -Xf
Removing y.txt
$ ls
x.txt z.txt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
z.txt
nothing added to commit but untracked files present (use "git add" to track)
git clean -dX
该-d
选项导致git-clean
递归到未跟踪的目录。
该-X
选项会导致git-clean
删除被忽略的文件。
您还可以指定要清理的目录:
git clean -dX myDirectory
-n
您可以先通过添加选项来尝试试运行。试运行实际上并没有删除任何东西,它只是显示了将要做什么。
git clean -dXn