为什么要使用Git跟踪空目录?

4
我曾见过人们在Git仓库的空目录中添加.gitkeep.keep文件,但我不明白为什么我需要跟踪一个空目录。
你可以举几个必须要这样做的例子吗? 相关问题 .gitignore和.gitkeep之间有什么区别?

可能的一个原因是因为在主分支(或其他分支)中,目录不会为空。这可以消除一些混淆。 - Tim Biegeleisen
Git在分支切换时不会删除空文件夹,在这种情况下,无需添加.gitkeep.keep文件。我正在尝试理解为什么要在存储库中故意保留一个空目录。 - pgpb.padilla
4个回答

7

当创建一个模板项目供他人实现时,包含空目录可能会很方便,以帮助指导特定内容的放置位置。

例如,MVC模板仓库可以包括空的模型、视图和控制器文件夹,这些文件夹已经处于正确的位置,并准备好填充文件。


根据我的经验,使用空文件夹的方法从来不可行,因为人们最终会随意添加文件。在这种情况下,您必须将错误放置的文件移动到正确的位置,所以试图通过创建空文件夹来预先防止其他开发人员是没有用的,必要时可以创建正确的目录,但不应事先创建。 - pgpb.padilla

4

1
我通常会在必须存在的目录中添加一个 .gitkeep 文件,以便我的应用程序正常运行(避免编写检查它们是否存在及其创建的代码)。例如,保存用户头像的目录。

那么你是直接将你的git仓库部署到执行环境中吗?我原以为大多数项目都需要打包阶段和安装阶段,其中任一阶段都可以设置必要的运行时文件夹。 - Jolta
1
这仅适用于小应用程序,比如博客之类的东西。关键是尽快开始,如果您的应用程序需要打包阶段,那么一定要额外检查所需目录是否存在。 - user2962785

0
有时候,在编译生成文件时需要保留一个空文件夹。

2
我认为,除非存在奇怪的权限问题,否则构建产物所在的文件夹不应该在Git下进行版本控制。 - Tim Biegeleisen
@TimBiegeleisen,如果创建文件夹的权限问题,可能是在运行git clone时失败了。 - gzh
我认为跟踪构建产品并不是必要的。可以合理地假设,如果您正在构建一个产品,那么您已经拥有足够的特权来创建文件,因此创建一个文件夹不应该成为问题。 - pgpb.padilla

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