根据帮助,如果没有-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完全按照文档所说的做。