【发布时间】:2021-04-01 12:08:43
【问题描述】:
如果我重命名一些目录,然后提交并推送到原点,然后从另一台计算机中提取,我将找到旧目录和新目录。在旧目录中会有一些被忽略的文件。如何删除所有此类未跟踪的目录,而不触及任何已跟踪目录中的任何文件(已跟踪或未跟踪)。
(“跟踪目录”是指其中至少包含一个跟踪文件的目录。)
【问题讨论】:
如果我重命名一些目录,然后提交并推送到原点,然后从另一台计算机中提取,我将找到旧目录和新目录。在旧目录中会有一些被忽略的文件。如何删除所有此类未跟踪的目录,而不触及任何已跟踪目录中的任何文件(已跟踪或未跟踪)。
(“跟踪目录”是指其中至少包含一个跟踪文件的目录。)
【问题讨论】:
试试这个:
git clean -d -fx
-d:告诉 git clean 你还想删除所有未跟踪的目录,默认情况下它会忽略目录。
-f:强制选项启动从当前目录中实际删除未跟踪文件。
-x:告诉 git clean 也包括任何被忽略的文件。
【讨论】:
git clean -dX
-d 选项导致git-clean 递归到未跟踪的目录。
-X 选项导致git-clean 删除被忽略的文件。
您还可以指定要清理的目录:
git clean -dX myDirectory
您可以先通过添加-n 选项来尝试试运行。试运行实际上并没有删除任何内容,它只是显示将要做什么。
git clean -dXn
【讨论】:
你可能在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)
【讨论】: