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

3

好的,所以我 fork 了一个项目,运行了 git pull upstream master 命令,然后 git 状态显示工作目录干净。接下来我从项目中运行了一些测试。

现在,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个回答

3

它们是空目录吗?

Git不跟踪空目录(实际上Git根本不跟踪目录,正如您可以在Git FAQ中阅读的那样),因此它们不会出现在git status中,但确实会被git clean -f -d清理。

这就是为什么这样的git-clean命令的干运行显示不会以常规git status方式出现的目录的原因。

顺便说一句,这也是为什么有些人会在空目录中添加一个占位文件,有时按惯例称为.gitinclude,以使Git跟踪它们。


啊,这很有道理。activemodel/log/ 有一个空的测试和开发文件,而 actionpack/test/temp 没有文件。它是一个空目录,所以在 git status 中不会显示。现在我明白了。谢谢。 - fontno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接