为什么git clean --dry-run显示比git status更多的未跟踪文件?

时间:2013-05-26 23:18:01

标签: git github

好的所以我分叉了一个项目,运行git pull upstream master并且git status表示工作目录干净。然后我从项目中运行了一些测试

现在git status显示

# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   activemodel/log/

现在$ git clean -d -f -n显示

# Would remove actionpack/test/temp/
# Would remove activemodel/log/

这些只是日志文件的目录,但我很好奇为什么actionpack/test/temp/显示在git clean dry run但未显示在git status

如果所有未跟踪的文件都未显示在git status中,然后git clean会删除您未意识到会删除的文件,则可能会出现问题。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

它们是空目录吗?

Git不跟踪空目录(实际上Git根本不跟踪目录,因为你可以在Git FAQ中阅读),因此它们不会出现在git status中,但它们确实会被清除git clean -f -d

这就是为什么这种git-clean命令的干运行显示的目录不会以常规git status显示。

作为旁注,这也是为什么有些人在空目录中添加占位符文件(有时按惯例称为.gitinclude)以便让Git跟踪它们的原因。