Git Clean无法清除未跟踪的文件

时间:2018-08-15 21:05:14

标签: git git-clean

我收到“以下未跟踪的工作树文件将被结帐覆盖...请在切换分支之前移动或删除它们”错误。

常见修补程序似乎是runat="server"

当我键入它时,没有任何错误,但是什么也没有发生。当我去检查另一个分支时,我只会遇到与上面相同的错误。

为什么git clean绝对不做任何事情?

更新:

更多信息。 git cleangit -n做的完全一样……什么也没有。

5 个答案:

答案 0 :(得分:4)

就像指定了其他注释一样,您确实需要添加-f标志。

但是您可能会遇到问题,并不是因为您没有指定--force,而是因为您位于另一个子目录中。

例如,如果我的git仓库位于/myrepo/.git

和/myrepo/untracked/file.txt子目录中的未跟踪文件,

但是我终端的当前工作目录是/ myrepo / src/。

git clean -fd将不起作用。您需要先运行CD到项目根目录。

TL; DR:git clean -fd显然仅清除终端当前工作目录及其下方的未跟踪文件和目录。

答案 1 :(得分:2)

这可能不是在OP情况下发生的情况。但是我有同样的问题。在我的情况下,未清除的目录是我添加的子模块,但随后我用git将其重置。我必须从.gitmodules.git/config.git/modules/<path to submodule>中删除所有痕迹,以便git clean删除它,即使git status识别为未跟踪。

答案 2 :(得分:1)

尝试使用

git clean -fd

尝试保存更改,

git stash

如果您想使用所有更改,

git stash apply

答案 3 :(得分:1)

如果要清除未跟踪的文件,请使用以下命令。但是,在运行此命令之前请多加注意,因为它将擦拭您的工作区域,索引HEAD。

git reset --hard

我认为您的工作区域中存在gitignore的未跟踪目录或忽略的文件(构建文件)。您可以通过以下命令将其删除。

git clean -dfx
  

-d

     

除了删除未跟踪的文件,还删除未跟踪的目录。如果   未跟踪的目录由另一个Git存储库管理,它是   默认情况下未删除。如果确实要使用-f选项两次   删除这样的目录。

     

-f   --force

     

如果Git配置变量clean.requireForce未设置为false,   git clean将拒绝删除文件或目录,除非   给定-f,-n或-i。 Git将拒绝使用.git删除目录   子目录或文件,除非给出第二个-f。

     

-x

     

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

有关更多信息,git clean

答案 4 :(得分:0)

在我看来,您需要指定-n或-f。在手册页中:

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.