3

好的,所以我分叉了一个项目,运行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会删除您没有意识到它会删除的文件。

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

4

1 回答 1

3

它们是空目录吗?

Git 不跟踪空目录(实际上 Git 根本不跟踪目录,您可以在Git FAQgit status中阅读) ,因此它们不会出现在git clean -f -d.

这就是为什么此类git-clean命令的空运行会显示以常规git status.

作为旁注,这也是为什么有些人.gitinclude在空目录中添加一个占位符文件(有时按约定调用)以使 Git 跟踪它们的原因。

于 2013-05-26T23:21:13.737 回答