0

如果我重命名一些目录,然后提交并推送到原点,然后从另一台计算机中提取,我会发现旧目录和新目录。在旧目录中会有一些被忽略的文件。如何删除所有这些未跟踪的目录,而不触及任何已跟踪目录中的任何文件(已跟踪或未跟踪)。

(“跟踪目录”是指一个目录,其中至少包含一个跟踪文件。)

4

3 回答 3

1

尝试这个:

git clean -d -fx

-d:告诉 git clean 你还想删除任何未跟踪的目录,默认情况下它会忽略目录。
-f:强制选项启动从当前目录中实际删除未跟踪文件。
-x:告诉 git clean 也包括任何被忽略的文件。

于 2021-04-01T12:26:11.320 回答
0

你可能会追求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)

于 2021-04-01T12:16:05.877 回答
0
git clean -dX

-d选项导致git-clean递归到未跟踪的目录。

-X选项会导致git-clean删除被忽略的文件。

您还可以指定要清理的目录:

git clean -dX myDirectory

-n您可以先通过添加选项来尝试试运行。试运行实际上并没有删除任何东西,它只是显示了将要做什么。

git clean -dXn
于 2021-04-01T12:27:06.607 回答