一、项目故事
我们开发项目时,经常使用 thinkphp 框架,这个项目时生成后会有有一个缓存目录 runtime,如图
如上图,初始状态时是没有 runtime 这个目录的,因为它是存放 log 日志文件、cache 缓存文件和temp 临时文件等这些无用的文件。而我们在做 git 版本控制时,根本不考虑此目录,因为这个目录是做项目时才创建的!
但是有一些人不太懂代码,认为项目有问题,需要好一阵解释才知道。
而这个文件正是起到项目版本控制,可以创建空目录的。
二、.gitkeep 总结
.gitkeep 文件是创建在一个空目录下的标识性文件,其作用是为了使 Git 保留该空目录(在有了 .gitkeep 文件后就不是空目录了)。
.gitkeep 文件的文件名是社区的一个约定,仅仅只是为了起到一个统一的目的,使开发者在看到该文件时就知道其作用。
.gitkeep 文件和官方没有任何关系,并不是官方定义的 Git 的系统文件。
.gitkeep 文件应该是一个目录下的唯一文件,当该目录下有了其他文件时,就应该删除 .gitkeep 文件。
.gitkeep 文件和 .gitignore 文件没有任何关系;前者是为了使 Git 保留一个空目录,后者是为了使 Git 忽略某些指定的文件。
.gitkeep 文件并不是强制规定,只是一个约定,完全可以用自己喜欢的方式,比如 .test 之类的,但 .gitkeep 文件无疑是被大多数开发者所承认的一个约定或者说是最佳实践,推荐使用。
三、.gitkeep 约定和 .gitignore 一起使用
如图所示,意思很简单,忽略 runtime 这个目录,但不忽略这个目录下的 .gitkeep 文件。
runtime 文件目录