这可能不是在OP的情况下发生的情况。但是我也遇到了同样的问题。在我的情况下,没有被清理的目录是我添加的子模块,但我随后git重置了它。我必须从.gitmodules,.git/config和.git/modules/<path to submodule>中删除所有跟踪它的痕迹,以便git clean删除它,即使git status识别它为未跟踪。
OPTIONS
-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.
-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 or -i. Git will refuse to modify untracked nested git
repositories (directories with a .git subdirectory) unless a second -
f is given.
7条答案
按热度按时间qzwqbdag1#
如果你想清理未被跟踪的文件,使用下面的命令。但是,在运行这个命令之前要小心,因为它会擦除你的工作区,索引,HEAD。
我认为你的工作区中有未跟踪的目录或gitignore被忽略的文件(构建文件)。你可以通过下面的命令删除它们。
-d
除了删除未跟踪的文件外,还可以删除未跟踪的目录。如果未跟踪的目录由其他Git仓库管理,则默认情况下不会删除。如果确实要删除这样的目录,请使用-f选项两次。
-f -力
如果Git配置变量clean.requireForce没有设置为false,git clean将拒绝删除文件或目录,除非给出-f,-n或-i。Git将拒绝删除带有.git子目录或文件的目录,除非给出第二个-f。
-x
不要使用从.gitignore(per directory)〉和$GIT_DIR/info/exclude读取的标准忽略规则,但仍然使用-e〉选项中给出的忽略规则。这允许删除所有未跟踪的文件,包括构建产品。这可以用来(可能与git reset结合使用)创建一个原始的工作目录来测试一个干净的构建。
更多信息git clean
5m1hhzi42#
与其他注解所指定的一样,您确实需要添加-f标志。
但是您可能遇到问题,不是因为您没有指定--force,而是因为您在不同的子目录中。
例如,如果我的git仓库位于/myrepo/.git中
和子目录/myrepo/untracked/file. txt中的未跟踪文件,
但我的终端当前的工作目录是/myrepo/src/。
git clean -fd将不起作用。在运行命令之前,您需要cd到项目根目录。
TL;DR:git clean -fd显然只清理终端当前工作目录下未被跟踪的文件和目录。
20jt8wwn3#
尝试使用
尝试隐藏更改,
如果你想接受所有的改变
5sxhfpxr4#
这可能不是在OP的情况下发生的情况。但是我也遇到了同样的问题。在我的情况下,没有被清理的目录是我添加的子模块,但我随后git重置了它。我必须从
.gitmodules
,.git/config
和.git/modules/<path to submodule>
中删除所有跟踪它的痕迹,以便git clean删除它,即使git status识别它为未跟踪。px9o7tmv5#
在我看来,你需要指定-n或-f。从手册页:
kd3sttzy6#
我猜这是因为
git clear -f
不会递归到untracked目录,即使文档中写着:从当前目录开始,通过递归删除不受版本控制的文件来清理工作树。
...
-d
文档澄清了这一困惑:通常情况下,当指定no时,git clean不会递归到未被跟踪的目录中,以避免删除太多。指定-d也会递归到这些目录中。
...
dm7nw8vv7#
我总是使用
git clean -df -f
或git clean -dfx -f
(如果我想删除忽略的文件),因为这是git的官方文档所说的: