remote - 如何从当前的Git工作树中删除本地(未跟踪)文件?




git查看分支 (20)

如何从当前工作树中删除未跟踪的本地文件?


以递归方式清理git存储库和所有子模块

以下命令将以递归方式清除当前git存储库及其所有子模块:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

删除未跟踪文件的简单方法

要删除所有未跟踪的文件,最简单的方法是先添加所有文件并重置repo ,如下所示

git add --all
git reset --hard HEAD

运行`git clean`命令时要小心。

在运行实际命令之前始终使用 -n ,因为它将显示将删除哪些文件。

git clean -n -d 
git clean -f -d

默认情况下, git clean将仅删除未被忽略的未跟踪文件。 任何与.gitignore中的模式匹配的文件或其他忽略文件都不会被删除。 如果您也想删除这些文件,可以在clean命令中添加-x

git clean -f -d -x

使用clean命令还可以使用交互模式-i

git clean -x -i

另外

如果您不是100%确定删除未提交的作品是安全的,则可以使用存储

git stash --all

它还将清除您的目录,但是您可以使用applypop 存储来随时灵活地检索文件。 然后在稍后您可以使用以下方法清除您的存储:

git stash drop // or clean


git clean -f to remove untracked files from working directory.

我在博客git-intro-basic-commands了一些基础知识


git clean -fd删除目录

git clean -fX删除被忽略的文件

git clean -fx删除被忽略和未被忽略的文件

可以将以上所有选项组合使用

git clean -fdXx

检查git手册以获得更多帮助


删除此repo +子模块中的所有额外文件夹和文件

这使您处于与新克隆相同的状态。

git clean -ffdx

删除此仓库中的所有额外文件夹和文件,但不删除其子模块

git clean -fdx

只删除额外的文件夹但不删除文件(例如构建文件夹)

git clean -fd

删除额外的文件夹+忽略的文件(但不删除任何新添加的文件)

如果文件未被忽略且尚未签入,那么它将保留。 注意大写字母X.

git clean -fdX

新的交互模式

git clean

好的,在命令行中使用git可以轻松删除不需要的未跟踪文件和文件夹 ,只需这样做:

git clean -fd

在执行之前仔细检查 ,因为它将删除文件和文件夹而不创建任何历史记录...

同样在这种情况下, -f代表强制, -d代表目录......

因此,如果您只想删除文件,则只能使用-f

git clean -f

如果要删除(目录)和文件,则只能删除未跟踪的目录和文件,如下所示:

git clean -fd

此外,您可以使用-x标志来包含git忽略的文件。 如果要删除所有内容,这将非常有用。

并添加-i标志,让git要求您在移动中逐个删除文件的权限。

如果您不确定并想先检查一下,请添加-n标志。

如果您不希望在成功删除后看到任何报告,请使用-q

我还创建了下面的图像,使其更具记忆性,特别是我看到很多人有时会混淆-f清理文件夹或以某种方式混合它!



你正在寻找git-clean 。 它用于从工作树中删除未跟踪的文件。


使用git clean -f -d确保也删除了目录

然后,您可以使用git status检查您的文件是否真的消失了。


如果未跟踪目录是它自己的git存储库(例如子模块),则需要使用-f两次:

git clean -d -f -f


如果需要从特定子目录中删除未跟踪的文件,

git clean -f {dir_path}

并结合使用方法删除未跟踪的目录/文件和忽略的文件。

git clean -fxd {dir_path}

在此之后,您将仅在git status修改文件。



我刚刚发明并尝试过这种情况的生活方式(完美无缺):

git add .
git reset --hard HEAD

谨防! 在执行此操作之前,请务必提交任何所需的更改 (即使在非未跟踪的文件中)。


我很惊讶之前没有人提到这件事:

git clean -i

这代表交互式 ,您将快速了解将要删除的内容,为您提供包含/排除受影响文件的可能性。 总体而言,仍然比在真正的清洁之前运行强制性--dry-run更快。

如果你还想要处理空文件夹,你将不得不投入-d 。 最后,它有一个很好的别名:

git iclean

话虽这么说,额外的手持交互式命令可能会让有经验的用户感到厌倦。 这些天我只使用已经提到的git clean -fd


更好的方法是使用:git clean

git clean -d -x -f

这将删除未跟踪的文件,包括目录(-d)git (-x)忽略的文件。

另外,将-f参数替换为-n以执行dry-run-i以用于交互模式,它将告诉您将删除的内容。


正常的git clean命令不会使用我的git version 2.9.0.windows.1删除未跟踪的文件。

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

用于从git docs中删除未跟踪文件的 uggested命令是git clean

git clean - 从工作树中删除未跟踪的文件

建议的方法:使用git clean -i交互模式,这样我们就可以控制它了。 让我们看看剩余的可用选项

可用选项:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

说明:

1. -d

除了未跟踪的文件之外,删除未跟踪的目录。 如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会删除它。 如果您确实要删除此类目录,请使用-f选项两次。

2. -f, - force

如果Git配置变量clean.requireForce未设置为false,则除非给定-f,-n或-i,否则git clean将拒绝运行。

3.-i, - 相互作用

显示将要执行的操作并以交互方式清理文件。 有关详细信息,请参见“交互模式”

4. -n, - 干跑

实际上不要删除任何东西,只显示将要做的事情。

5. -q, - quiet

保持安静,仅报告错误,但不报告成功删除的文件。

6. -e, - exclude =

除了在.gitignore(每个目录)和$ GIT_DIR / info / exclude中找到的那些之外,还要考虑这些模式在有效的忽略规则集中。

7. -x

不要使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但仍然使用-e选项给出的忽略规则。 这允许删除所有未跟踪的文件,包括构建产品。 这可以使用(可能与git reset一起使用)来创建一个pristine工作目录来测试一个干净的构建。

8. -X

仅删除Git忽略的文件。 这可能有助于从头开始重建所有内容,但保留手动创建的文件。


要知道在实际删除之前将删除的内容:

git clean -d -n

它将输出如下内容:

将删除sample.txt

要删除上一个命令的输出中列出的所有内容:

git clean -d -f

它将输出如下内容:

删除sample.txt


这就是我经常使用的:

git clean -fdx

对于一个非常大的项目,您可能希望运行它几次。





git-branch