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

git branch git-branch 深蓝的审判 | 2020-02-02 19:35:06


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





30 答案



根据Git文档,Git clean
从工作树中删除未跟踪的文件

步骤1是显示将使用
-n
选项删除的内容:
# Print out the list of files which will be removed (dry run)
git clean -n

clean步骤-注意:这将删除文件:
# Delete the files from the repository
git clean -f

删除目录,运行
git clean -f -d
git clean -fd

删除忽略的文件,运行
git clean -f -X
git clean -fX

删除忽略的和非-i忽略的文件,运行
git clean -f -x
git clean -fx

注意后面两个命令的
X
上的大小写差异。
如果在配置中将
clean.requireForce
设置为“true”(默认值),需要指定
-f
否则实际上什么都不会发生。
有关详细信息,请再次参阅
git-clean
文档。
如果Git配置变量clean.requireForce未设置为
false,则选项
-f
--force

,除非给定
-f
-n
-i

-x

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

只删除git忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件。
-n
--dry-run

实际上不删除任何内容,只显示将要执行的操作。
-d

除了未跟踪的文件之外,还删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会删除该目录。如果您真的想删除这样的目录,请使用
-f
选项两次。

2020-02-02 19:35:18
Yuki希


使用
git clean -f -d
确保目录也被删除。
-n, -dry-run

不实际删除任何内容,只显示将要执行的操作。
-d

除了未跟踪的文件之外,还删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会将其删除。如果您真的想删除这样的目录,请使用-f选项两次。
然后,您可以使用
git status
检查您的文件是否真的消失了

2020-02-02 19:35:18
Rlyeh


我很惊讶之前没有人提到这一点:
git clean -i

表示交互式,您将快速了解要删除的内容,从而有可能包括/排除受影响的文件。总的来说,仍然比实际清理之前运行强制的
--dry-run
快。
如果您还想处理空文件夹,则必须输入
-d
。最后,它形成了一个很好的别名:
git iclean

也就是说,对于有经验的用户来说,额外的交互命令的使用可能会很累。这些天我只使用前面提到的
git clean -fd

2020-02-02 19:35:18
囧郭


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

2020-02-02 19:35:18
knight35


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

git clean -d -f -f

2020-02-02 19:35:18
吉井明久


删除未跟踪文件的简单方法
若要删除所有未跟踪文件,简单的
方法是先添加所有未跟踪文件,然后按如下方式重置回购协议
git add --all
git reset --hard HEAD

2020-02-02 19:35:18
夏亚阿兹纳布尔


是的。感谢@script wolf。

2020-02-02 19:35:18
塞巴斯疆


这是我经常使用的:
git clean -fdx

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

2020-02-02 19:35:18
still


你要找的是干净的。它用于从工作树中删除未跟踪的文件。

2020-02-02 19:35:18
overmind


如果需要从特定子目录中删除未跟踪的文件,
git clean -f {dir_path}

并使用组合方式删除未跟踪的目录/文件和忽略的文件。
git clean -fxd {dir_path}

在此之后,您只能在
git status中修改文件

2020-02-02 19:35:18
Tatara·Kogasa


git clean -fd
删除目录
git clean -fX
删除被忽略的文件
git clean -fx
删除被忽略和未被忽略的文件
可以结合使用上述所有选项,如
git clean -fdXx

查看git手册以获取更多帮助

2020-02-02 19:35:18
苏维埃废铁


删除此repo+子模块中的所有额外文件夹和文件
这将使您处于与新鲜克隆相同的状态。
git clean -ffdx

删除此repo中的所有额外文件夹和文件,但不删除其子模块
git clean -fdx

删除额外文件夹而不删除文件(例如生成或日志文件夹)
git clean -fd

删除额外文件夹+忽略的文件(但不是新添加的文件)
如果文件未被忽略且尚未签入,则它将保留。注意大写X。
git clean -fdX

新的交互模式
git clean

2020-02-02 19:35:18
伊科洛瑞特


好的,在命令行中使用
git
可以很容易地删除不需要的未跟踪文件和文件夹,只需这样做:
git clean -fd

在执行此操作之前进行两次检查,因为它将删除文件和文件夹而不创建任何历史记录…
在这种情况下,
-f
表示force,
-d
表示directory…
因此,如果您只想删除文件,则可以仅使用
-f
来删除(目录)和文件,您只能删除未跟踪的目录和文件,例如:
git clean -fd

此外,您还可以使用
-x
标志来包含git忽略的文件。如果您想删除所有内容,这将很有帮助。
添加
-i
标志,让git在运行中逐个请求您删除文件的权限。
如果您不确定并想先检查内容,添加
-n
标志。
如果您不想在成功删除后看到任何报告,请使用
-q

我还创建了下面的图像,以使其更令人难忘,特别是我看到许多人有时会混淆清理文件夹或以某种方式混淆它!

2020-02-02 19:35:18
calvan


更好的方法是使用:git clean
git clean -d -x -f

这将删除未跟踪的文件,包括目录
(-d)
和被
git (-x)
忽略的文件,将
-f
参数替换为
-n
以执行交互模式的
dry-run
-i
,它将告诉您要删除的内容。

2020-02-02 19:35:18
抚子酱


用户交互方法:
git clean -i -fd
Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

-i表示交互
-f表示强制
-d表示目录
-x表示忽略的文件(如果需要,请添加)
注意:add-n或--dry run只检查它将做什么。

2020-02-02 19:35:18
linrjun


git clean -f -d -x $(git rev-parse --show-cdup)
将clean应用于根目录,无论您在存储库目录树中的何处调用它。我一直使用它,因为它不会强迫您离开您现在工作的文件夹,并允许您从您所在的位置进行清理和提交。
请确保标志
-f
-d
-x
符合您的需要:
-d
Remove untracked directories in addition to untracked files. If an
untracked directory is managed by a different Git repository, it is
not removed by default. Use -f option twice if you really want to
remove such a directory.
-f, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to delete files or directories unless
given -f, -n or -i. Git will refuse to delete directories with .git
sub directory or file unless a second -f is given. This affects
also git submodules where the storage area of the removed submodule
under .git/modules/ is not removed until -f is given twice.
-x
Don't use the standard ignore rules read from .gitignore (per
directory) and $GIT_DIR/info/exclude, but do still use the ignore
rules given with -e options. This allows removing all untracked
files, including build products. This can be used (possibly in
conjunction with git reset) to create a pristine working directory
to test a clean build.

还有其他可用标志,只需检查
git clean --help

2020-02-02 19:35:18
女王蕾娜


对于我来说,只有以下几点有效:
git clean -ffdx

在所有其他情况下,我都会收到一些子目录的消息“跳过目录”。

2020-02-02 19:35:18
祁彬


我刚刚发明并尝试过的一种生活技能(效果很好):
git add .
git reset --hard HEAD

当心!执行此操作之前,请确保提交任何所需的更改(即使是在未跟踪的文件中)。

2020-02-02 19:35:18
薛定谔的猫


如果您只想删除“git status”列出的未跟踪的文件
git stash save -u
git stash drop "stash@{0}"

我更喜欢使用“git clean”,因为“git clean”将删除git忽略的文件,所以您的下一次生成将必须重新生成所有内容
并且您可能会丢失IDE设置。

2020-02-02 19:35:18
不华丽会死


要在实际删除之前知道要删除的内容:
git clean -d -n

它将输出如下内容:
将删除sample.txt
要删除上一个命令输出中列出的所有内容:
git clean -d -f

它将输出如下内容:
删除sample.txt

2020-02-02 19:35:18
尼酱带偶回家嘛


要删除未跟踪的文件,应首先使用命令查看受清理影响的文件
git clean -fdn

这将显示要删除的文件列表。现在要真正删除这些文件,请使用以下命令:
git clean -fd

2020-02-02 19:35:18
AC小飞侠


运行`git clean`命令时要小心。
在运行实际命令之前,请始终使用
-n
,因为它将显示要删除的文件。
git clean -n -d 
git clean -f -d

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

git clean -f -d -x

还有一个交互模式,可以使用clean命令
git clean -x -i

或者
如果您不是100%确定删除未提交的工作是安全的,您可以使用STARGE代替
 (7)  BR>它也将清除您的目录,但为您提供灵活的使用任何应用程序或POP的堆栈来检索文件的任何时间点。之后,您可以使用:
git stash drop // or clean

2020-02-02 19:35:18
叉克斯


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

我在我的博客git intro basic commands中介绍了一些基础知识

2020-02-02 19:35:18
Cross_十字


从git文档中删除未跟踪文件的建议命令是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、 --interactive
显示将要执行的操作并以交互方式清除文件。详见“互动模式”。-n、 --试运行
不要实际删除任何内容,只显示将要执行的操作。
5。-q、 --quiet
安静,只报告错误,不报告已成功删除的文件。
6。-e,--exclude=
除了在.GIT ignore(每个目录)和$GIT_DIR/info/exclude中找到的模式之外,还应将这些模式视为有效的忽略规则集中的模式。
7。-x
不使用从.GIT ignore(每个目录)和$GIT_DIR/info/exclude读取的标准忽略规则,但仍然使用-e选项提供的忽略规则。这允许删除所有未跟踪的文件,包括生成产品。这可以用来(可能与git reset一起)创建一个原始的工作目录来测试一个干净的构建。
8。-X
只删除Git忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件。

2020-02-02 19:35:18
菜头熊


普通的
git clean
命令不会使用my
git version 2.9.0.windows.1

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

2020-02-02 19:35:18
星幻夜梦


我们可以使用下面的git注释从当前git工作树中轻松删除本地未跟踪文件。
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] []

示例:
git reset --hard HEAD

链接:
https://git scm.com/docs/git reset
如何使用“git reset--hard HEAD”还原到以前的提交?
将本地存储库分支重置为与远程存储库头一样
https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-Reset.html

2020-02-02 19:35:18
darkness


递归清除git存储库和所有子模块
以下命令将递归清除当前git存储库及其所有子模块:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

2020-02-02 19:35:18
传说中的点


git clean -f

将从当前git中删除未跟踪的文件
git clean -fd

当您要删除目录和文件时,这将只删除未跟踪的目录和文件

2020-02-02 19:35:18
前方施工


哦,我的zsh和zsh通过git插件提供了那些伟大的别名。它们也可以在bash中使用。
gclean='git clean -fd'

gpristine='git reset --hard && git clean -dfx'

gclean
除了未跟踪的文件之外,还删除未跟踪的目录。
gpristine
硬重置本地更改,删除未跟踪的目录,
未跟踪的文件,并且不要使用从中读取的标准忽略规则.GIT ignore(每个目录)和$GIT_DIR/info/exclude,但是仍然使用-e选项提供的忽略规则。这允许删除所有未跟踪的文件,包括生成产品。这可以用来(可能与git reset一起)创建一个原始的工作目录来测试一个干净的构建。

2020-02-02 19:35:18
超威蓝猫


我喜欢使用
git stash
命令,稍后您可以获取隐藏的文件和更改。
git clean
也是一个不错的选择,但完全取决于您的要求。
下面是git stash和git clean的说明,7.3 git Tools-隐藏和清理

2020-02-02 19:35:18
团长


World is powered by solitude
备案号:湘ICP备19012068号