How to remove local (untracked) files from the current Git working tree?
如何从当前工作树中删除未跟踪的本地文件?
根据Git文档Git Clean
Remove untracked files from the working tree
步骤1是显示使用
1 | git clean -n |
清除步骤-注意:这将删除文件:
1 | git clean -f |
- 要删除目录,请运行
git clean -f -d 或git clean -fd 。 - 要删除忽略的文件,请运行
git clean -f -X 或git clean -fX 。 - 要删除被忽略和未被忽略的文件,请运行
git clean -f -X 或git clean -fX 。
注意后面两个命令在
如果在您的配置中将
有关更多信息,请参阅
-f, --force
If the Git configuration variable clean.requireForce is not set to
false, git clean will refuse to run unless given -f, -n or -i.-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.-X
Remove only files ignored by Git. This may be useful to rebuild
everything from scratch, but keep manually created files.-n, --dry-run
Don’t actually remove anything, just show what would be done.
-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.
使用
然后,您可以检查您的文件是否真的随
我很惊讶之前没人提到过:
1 | git clean -i |
这代表交互式,您将快速了解将要删除的内容,从而提供包括/排除受影响文件的可能性。总的来说,还是比实际清洁之前运行强制的
如果您还想处理空文件夹,则必须放入一个
1 | git iclean |
也就是说,对于有经验的用户来说,额外的交互命令的手持操作可能会让他们感到疲劳。这几天我只使用了前面提到的
如果未跟踪的目录是它自己的Git存储库(例如子模块),则需要使用
删除未跟踪文件的简单方法
要删除所有未跟踪的文件,方法是先将它们全部添加,然后按如下方式重置回购
1 2 | git add --all git reset --hard HEAD |
我喜欢
编辑:我还找到了一种在存储中显示未跟踪文件的方法(例如
edit2:
这是我一直使用的:
1 | git clean -fdx |
对于一个非常大的项目,您可能需要运行几次。
你要找的是干净的。它用于从工作树中删除未跟踪的文件。
如果需要从特定子目录中删除未跟踪的文件,
1 | git clean -f {dir_path} |
以及删除未跟踪目录/文件和忽略文件的组合方式。
1 | git clean -fxd {dir_path} |
在此之后,您只能在
可结合使用上述所有选项
查看Git手册获取更多帮助
删除此repo+子模块中的所有额外文件夹和文件
这将使您处于与新克隆相同的状态。
1 | git clean -ffdx |
删除此repo中的所有额外文件夹和文件,但不删除其子模块
1 | git clean -fdx |
只删除多余的文件夹,但不删除文件(例如,生成文件夹)
1 | git clean -fd |
删除额外的文件夹+忽略的文件(但不是任何新添加的文件)
如果文件未被忽略且尚未签入,则它将保持不变。注意大写x。
1 | git clean -fdx |
新建交互模式
1 | git clean |
好的,在命令行中使用
1 | git clean -fd |
在执行此操作之前请仔细检查,因为它将删除文件和文件夹,而不创建任何历史记录…
在这种情况下,
因此,如果只想删除文件,则只能使用
1 | git clean -f |
如果要删除(目录)和文件,则只能删除未跟踪的目录和文件,如下所示:
1 | git clean -fd |
此外,还可以使用
添加
如果您不确定,想先检查一下,请添加
如果删除成功后不想看到任何报告,请使用
我还创建了下面的图像,使它更容易记忆,特别是我看到许多人混淆了
更好的方法是使用:git clean
1 | git clean -d -x -f |
这将删除未跟踪的文件,包括目录
另外,将
用户交互方法:
1 2 3 4 5 6 7 8 9 10 11 | 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表示忽略的文件(如果需要,请添加)注意:添加-n或--dry-run来检查它将做什么。
确保标志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | -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. |
还有其他标记可用,只需检查
对我来说,只有以下方法有效:
1 | git clean -ffdx |
在所有其他情况下,我收到一些子目录的消息"跳过目录"。
如果只想删除"git status"列出的未跟踪文件
1 2 | git stash save -u git stash drop"stash@{0}" |
我喜欢这个而不是"git clean",因为"git clean"会删除文件被Git忽略,所以您的下一个版本必须重新生成所有内容你也可能会丢失你的IDE设置。
针对这种情况,我发明并尝试了一种生活方式(这种方式非常有效):
1 2 | git add . git reset --hard HEAD |
当心!在执行此操作之前,请确保提交任何所需的更改(即使是在未跟踪的文件中)。
要知道在实际删除之前将删除哪些内容,请执行以下操作:
它将输出如下内容:
将删除sample.txt
要删除上一命令输出中列出的所有内容:
它将输出如下内容:
删除sample.txt
要删除未跟踪的文件,应首先使用命令查看受清理影响的文件。
1 | git clean -fdn |
这将显示将被删除的文件列表。现在要实际删除这些文件,请使用以下命令:
1 | git clean -fd |
运行"git clean"命令时要小心。
在运行实际命令之前,一定要使用
1 2 | git clean -n -d git clean -f -d |
默认情况下,
1 | git clean -f -d -x |
还有交互模式可供使用CLEAN命令的
1 | git clean -x -i |
替代地
如果您不100%确定删除未提交的工作是安全的,您可以使用"存储"代替。
1 | git stash --all |
它还可以清除您的目录,但是可以灵活地在任何时间点使用stash with apply或pop来检索文件。稍后,您可以使用以下方法清除您的藏匿物品:
1 | git stash drop // or clean |
我在博客Git Intro Basic命令中介绍了一些基础知识
通过使用下面的git注释,我们可以很容易地从当前的git工作树中删除本地未跟踪的文件。
1 | git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] |
例子:
1 | git reset --hard HEAD |
链接:
正常的
1 2 | $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! |
从git文档中删除未跟踪文件的建议命令是git clean
git clean-从工作树中删除未跟踪的文件
建议方法:使用
可用选项:
1 2 | git clean -d -f -i -n -q -e -x -X (can use either) |
说明:
1。-D
删除未跟踪的目录以及未跟踪的文件。如果一个未跟踪的目录由另一个git存储库管理,默认情况下不会删除。如果确实要删除这样的目录,请使用-f选项两次。
2。-F,-力
如果git配置变量clean.requireforce未设置为false,则git clean将拒绝运行,除非给出-f、-n或-Ⅰ
三。-I,——互动
显示将要执行的操作并以交互方式清理文件。详见"互动模式"。
4。-N,-干运行
不要删除任何内容,只需显示将要执行的操作。
5。Q,安静
保持安静,只报告错误,但不报告成功删除的文件。
6。-e,-排除=
除了在.gitignore(每个目录)和$git_dir/info/exclude中找到的模式外,还应考虑这些模式位于一组有效的忽略规则。
7。-X
不要使用从.git ignore(每个目录)和$git_dir/info/exclude读取的标准忽略规则,但仍要使用ignore使用-e选项给出的规则。这允许删除所有未跟踪的文件,包括生成产品。可以使用(可能在结合git reset)创建一个原始的工作目录来测试一个干净的构建。
8。-X
只删除Git忽略的文件。这对于从头开始重建所有内容可能很有用,但保留手动创建的文件。
Clean out git repository and all submodules recursively
The following command will clean out
the current git repository and all its submodules recursively:
1 (git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
哦,我的zsh和zsh通过git插件提供了这些伟大的别名。它们也可以用于bash。
- 除未跟踪的文件外,
gclean 还删除未跟踪的目录。 gpristine 硬重置本地更改,删除未跟踪的目录,未跟踪的文件,不要使用从.git ignore(每个目录)和$git_dir/info/exclude读取的标准忽略规则,但仍要使用-e选项提供的忽略规则。这允许删除所有未跟踪的文件,包括生成产品。这可以用来(可能与git reset一起)创建一个原始的工作目录来测试一个干净的构建。
1 | git clean -f |
将从当前git中删除未跟踪的文件
1 | git clean -fd |
当您想删除目录和文件时,这将只删除未跟踪的目录和文件。
注意:首先导航到目录并签出要清理的分支。
仅清理文件[文件夹不会列出也不会清理]:
清理文件和文件夹:
如果您从列表中选择
例如:如果您重新构造远程文件夹并将更改拉到本地计算机上。最初由其他人创建的文件/文件夹将位于以前的文件夹和重新构造的新文件夹中。
我喜欢使用
I haved failed using most popular answers here - git doesn't delete
untracked files from the repository anyway. No idea why. This is my
super simplified answer without SPECIAL GIT COMMANDS!
任务:从Git存储库中删除未跟踪的文件:
已从存储库中删除所有文件和文件夹。
如果需要,可以在本地主机上还原它们:
你完了!
使用