如何从当前Git工作树中删除本地(未跟踪)的文件?
如何从当前工作树中删除未跟踪的本地文件?
根据Git文档git clean
从工作树中删除未跟踪的文件
第一步是通过使用-n
选项来显示将被删除的内容:
git clean -n
清洁步骤 – 小心:这将删除文件 :
git clean -f
- 要删除目录,请运行
git clean -f -d
或者git clean -fd
- 要删除忽略的文件,请运行
git clean -f -X
或者git clean -fX
- 要删除被忽略的和不被忽略的文件,运行
git clean -f -x
或者git clean -fx
注意两个后面的命令在X
上的区别。
如果你的configuration中的clean.requireForce
设置为“true”(缺省值),那么你需要指定-f
否则实际上什么都不会发生。
再次请参阅git-clean
文档以获取更多信息。
选项
-F
– 力
如果Gitconfigurationvariablesclean.requireForce没有设置为false,那么git clean将拒绝运行,除非给定-f,-n或-i。
-X
不要使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但是仍然使用-e选项给出的忽略规则。 这允许删除所有未跟踪的文件,包括构build产品。 这可以使用(可能与git reset一起)来创build一个原始的工作目录来testing一个干净的构build。
-X
只删除Git忽略的文件。 这对从头开始重build所有东西可能是有用的,但保留手动创build的文件。
-n
–dry运行
不要真的删除任何东西,只是显示会做什么。
-d
除了未跟踪的文件之外,还要除去未跟踪的目录。 如果未跟踪的目录由不同的Git存储库pipe理,则默认情况下不会被删除。 如果你真的想删除这样一个目录,使用-f选项两次。
使用git clean -f -d
来确保目录也被删除。
然后你可以检查你的文件是否真的没有了git status
。
git-clean
– 从工作树中删除未跟踪的文件
我很惊讶之前没有提到这个:
git clean -i
这表示交互式 ,您将快速了解将要删除的内容,为您提供包含/排除受影响文件的可能性。 总的来说,比在真正的清洁之前运行强制性的--dry-run
还要快。
如果你还想照顾空文件夹,你将不得不在-d
折腾。 最后,它使一个很好的别名:
git iclean
也就是说,交互式命令的额外手持对于有经验的用户来说可能会很累。 这些天我只使用已经提到的git clean -fd
如果untracked目录是自己的git仓库(例如子模块),则需要使用-f
两次:
git clean -d -f -f
我喜欢git stash save -u
因为你可以用git stash pop
撤销它们。
编辑:另外我find了一个方法来显示未藏匿的文件存储(例如, git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986
简单的方法来删除未跟踪的文件
要删除所有未跟踪的文件,最简单的方法是首先添加它们,并重置回购如下
git add --all git reset --hard HEAD
这是我总是使用的:
git clean -fdx
对于一个非常大的项目,您可能需要运行几次。
git-clean是你正在寻找的。 它用于从工作树中删除未跟踪的文件。
如果需要从特定的子目录中删除未跟踪的文件,
git clean -f {dir_path}
并结合删除未跟踪的目录/文件和忽略文件的方式。
git clean -fxd {dir_path}
在此之后,您将只在git status
修改文件。
git clean -fd
删除目录
git clean -fX
删除被忽略的文件
git clean -fx
删除被忽略和未被忽略的文件
可以结合使用以上所有选项
git clean -fdXx
检查git手册获取更多帮助
更好的方法是使用:git clean
git clean -d -x -f
这将删除未跟踪的文件,包括git (-x)
忽略的目录(-d)
和文件。
另外,将-f
参数replace为-n
以执行dry-run
或-i
交互模式,它会告诉你什么将被删除。
用户交互方式:
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只是检查它会做什么。
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
。
删除一切:获取与新鲜克隆相同的状态的回购
git clean -fdx
删除诸如构build输出的无关文件夹
git clean -fd
删除多余的文件夹+文件,如build + IDE临时文件
这只会删除被忽略的文件。 如果文件没有被忽略+没有签入,那么它保持。
git clean -fdX
新的互动模式
git clean
好的,删除不需要的未跟踪的文件和文件夹很容易在命令行中使用git
,只需执行以下操作:
git clean -fd
仔细检查 ,因为它会删除文件和文件夹,而没有任何历史logging…
在这种情况下, -f
代表强制, -d
代表目录…
所以,如果你只想删除文件,你可以只使用-f
:
git clean -f
如果你想删除(目录)和文件,你只能删除未跟踪的目录和文件,如下所示:
git clean -fd
另外,你可以使用-x
标志来包含被git忽略的文件。 如果你想删除一切,这将是有帮助的。
并添加-i
标志,使git要求您在移动中逐一删除文件的权限。
如果您不确定并且想要首先检查事物,请添加-n
标志。
如果在成功删除后不想看到任何报告,请使用-q
。
我也创build下面的图像,使其更容易记忆,特别是我看到很多人混淆-f
有时清理文件夹或混淆了某种方式!
对于这种情况我只是发明和尝试的一种生活方式(完美地工作):
git add . git reset --hard HEAD
谨防! 在执行此操作之前,请确保提交任何所需的更改 (即使在未跟踪的文件中)。
如果您只想删除“git status”未列出的文件,
git stash save -u git stash drop "stash@{0}"
我更喜欢这个'git clean',因为'git clean'会删除被git忽略的文件,所以你的下一个版本将不得不重build所有的东西,你也可能会丢失你的IDE设置。
对我而言,只有以下工作:
git clean -ffdx
在所有其他情况下,我收到了一些子目录的消息“跳过目录” 。
有人应该提到:
git clean [<options>]
我对吗?
在实际删除之前知道要删除的内容:
git clean -d -n
它会输出如下所示的内容:
将删除sample.txt
要删除上一个命令输出中列出的所有内容:
git clean -d -f
它会输出如下所示的内容:
删除sample.txt
要删除未跟踪的文件,应首先使用命令查看将受到清理影响的文件
git clean -fdn
这将显示您将被删除的文件列表。 现在要真正删除这些文件使用此命令:
git clean -fd
正常的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 clean -f to remove untracked files from working directory.
我在我的博客中介绍了一些基础知识, git-intro-basic-commands
uggested 从git docs中删除未跟踪文件的命令是git clean
git clean – 从工作树中删除未跟踪的文件
build议的方法:通过使用git clean -i
互动模式,以便我们可以控制它。 让看看剩余的可用选项。
可用选项:
git clean -d -f -i -n -q -e -x -X (can use either)
说明:
1. -d
除了未跟踪的文件之外,还要除去未跟踪的目录。 如果未跟踪的目录由不同的Git存储库pipe理,则默认情况下不会被删除。 如果你真的想删除这样一个目录,使用-f选项两次。
2. -f,–force
如果Gitconfigurationvariablesclean.requireForce没有设置为false,那么git clean将拒绝运行,除非给定-f,-n或-i。
3. -i, – 交互
以交互方式显示将要完成的操作和清理文件。 有关详情,请参阅“交互模式”。
4. -n, – 继续运行
不要真的删除任何东西,只是显示会做什么。
5. -q, – 安静
保持安静,只报告错误,而不是成功删除的文件。
6. -e,–exclude =
除了在.gitignore(每个目录)和$ GIT_DIR / info / exclude中find的那些外,还可以将这些模式视为有效的忽略规则的集合。
7. -x
不要使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但是仍然使用-e选项给出的忽略规则。 这允许删除所有未跟踪的文件,包括构build产品。 这可以使用(可能与git reset一起)来创build一个原始的工作目录来testing一个干净的构build。
8. -X
只删除Git忽略的文件。 这对从头开始重build所有东西可能是有用的,但保留手动创build的文件。
运行`git clean`命令时要小心。
在运行实际的命令之前总是使用 -n
,因为它会告诉你哪些文件将被删除。
git clean -n -d git clean -f -d
默认情况下, git clean
只会删除未被忽略的未跟踪文件。 任何匹配.gitignore或其他忽略文件中的模式的文件都不会被删除。 如果你也想删除这些文件,你可以在clean命令中添加一个-x
。
git clean -f -d -x
也有交互模式可用-i
与干净的命令
git clean -x -i
另外
如果您不能100%确定删除未提交的作品是安全的,则可以使用存储
git stash --all
它也将清除你的目录,但给你灵活性,以检索文件在任何时间点使用隐藏 申请或stream行 。 然后在稍后的时候,你可以使用
git stash drop // or clean
注意:首先导航到目录并签出要清理的分支。
-i
交互模式,它会告诉你什么会被删除,你可以从列表中select一个动作。
-
只清理文件 [文件夹不会被列出,不会被清除]:
$ git clean -i
-
清理文件和文件夹 :
$ git clean -d -i
-d
包括目录。
如果你从列表中selectc
。 文件/文件夹将被删除,但没有被跟踪,也将删除你搞乱的文件/文件夹。*
例如:如果重新构build远程文件夹并将更改提交到本地计算机。 由其他人创build的文件/文件夹最初将位于过去的文件夹中,并位于您重新构build的新文件夹中。
使用git reset HEAD <file>
来取消一个文件
以下命令将清除当前的git存储库和所有子模块:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
如果您使用zsh bash使用oh-my-zsh ,则可以使用这些很好的别名:
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
- 除了未跟踪的文件之外,
gclean
除去未跟踪的目录 。 -
gpristine
硬重置本地更改,删除未跟踪的目录,未跟踪的文件,并且不使用从.gitignore(每个目录)和$ GIT_DIR / info / exclude读取的标准忽略规则,但仍使用-e选项给出的忽略规则。 这允许删除所有未跟踪的文件,包括构build产品。 这可以使用(可能与git reset一起)来创build一个原始的工作目录来testing一个干净的构build 。