根据帮助,如果没有-x选项git clean应该更不用说被忽略的文件,但是它没有。

[il@reallin test]$ cat .gitignore
*.sar
[il@reallin test]$ mkdir -p conf/sar && touch conf/sar/aaa.sar
[il@reallin test]$ git status
# On branch master
nothing to commit, working directory clean
[il@reallin test]$ git clean -df
Removing conf/

conf/sar/aaa.sar被删除。是虫子吗?

最佳答案

根据man git clean

-d
    Remove untracked directories in addition to untracked files.

在您的例子中,目录conf/sar没有被跟踪-它不包含任何被git跟踪的文件。如果您没有gitignore规则并执行了git clean -fd,则此未跟踪目录的内容将被删除-正如文档所说。
现在,如果添加带有忽略.gitignore文件规则的*.sar文件,则不会改变基本事实,即目录conf/sar/仍处于未跟踪状态,并且具有符合此gitignore规则的未跟踪文件aaa.sar不应突然使其由git clean -fd取消移动。
但是,如果将任何跟踪文件添加到忽略的aaa.sar旁边,则此目录不会被删除,您的文件将被单独保存。
换言之,虽然看起来很混乱,但这不是一个bug,Git完全按照文档所说的做。

08-26 20:22