什么是 .gitkeep ?

转自什么是 .gitkeep ?

起因

其实关于 .gitkeep 这个文件呢,我之前是完全没有听说过的。也是前几天同事分享,我才了解到关于这个文件的一些东西。

.gitkeep 文件的作用

经过同事的介绍,我发现其实 .gitkeep 这个文件并不是一个多么复杂 ,多么高深的东西,相反,它的意图,或者说作用,其实非常简单!

就是——使 Git 保留一个空文件夹!

说实话,这样的作用,有点出乎我的意料,因为,我以前其实也用过类似的东西。

众所周知,Git 是一个文件追踪系统,这也导致了 Git 的设计初衷是对文件进行追踪,所以,Git 不会追踪一个空目录。

但是,在某些情况下,我们确实是需要保留一些空目录的。例如:项目结构、项目脚手架等。

这时候,由于尚未对功能进行开发,所以某些目录下根本没有文件,如果我们不做任何措施直接将该 repo push 到远端的话,就会产生一个情况:空目录丢失!

为了解决这个问题,以前我的做法是在空目录下新建一个名为 please.delete.me 的文件,该文件没有内容,仅仅用于声明,告诉 Git 该目录不是一个空目录,从而将该目录保留,而在使用时,当该目录有了真正的有意义的文件时,就应该删除 please.delete.me 文件。

而 .gitkeep 文件的作用,和我用过的 please.delete.me 文件的作用完全一样,不同之处仅仅在于换了一个好听点的名字。

到这里,其实这个文件已经算是解释清楚了,但是,为什么要叫 .gitkeep 呢?为什么不叫 please.delete.me 呢?

因为 please.delete.me 这个做法其实也是从我的老师那里学来的,我一直觉得这是一个很🐂🍺的想法, 那么,又是谁想出来的搞 .gitkeep 文件呢?

关于这一点,其实我的同事在分享的时候已经说过了,她说 .gitkeep 这个做法其实是社区的一个约定。

但是,为了搞清楚这个东西还有没有深层次的原因,我又亲自去搜索了一下。找到了以下的几篇文章:

What are the differences between .gitignore and .gitkeep?

.gitkeep

GITKEEP File Extension - What is a .gitkeep file and how do I open it?

What are .keep and .gitkeep used for in Git?

【译】什么是 .gitkeep ? .gitkeep 和 .gitignore 有什么区别?

一一翻看了这些文章后,我发现,大家对 .gitkeep 这个文件的解读几乎一模一样,而且叫这个名字似乎也确实是社区的一个约定,和 Git 官方完全没有半毛钱关系!但是,也有一篇帖子中的一个回复说道,‘流行的Rails框架使用.keep文件而不是.gitkeep保留这些空文件夹稍微改变了此约定,因为git不是唯一不跟踪空文件夹的源代码控制系统’。

这样看来,也并不是所有人都同意这个约定嘛😂!

但是,建一个空文件这个想法还是得到了所有人的支持的,至于叫什么名字,好吧,大多数都叫 .gitkeep ,那 我以后也改成 .gitkeep 吧😂!(感觉有种随大流的感觉)

同时,在翻看这些文章的时候,我还看到一些文章中写了 .gitkeep 和 .gitignore 的区别,原因是说 .gitkeep 这个名字容易和 .gitignore 混淆,使一些人觉得这两者之间有某种关系或联系。

对于这种想法,可能是我自己并不觉得两者之间有什么联系吧,也有可能是我之前用的是 please.delete.me ,现在看了 .gitkeep 的作用后,我理解得很透彻(自我感觉),所以我觉得这个东西完全没有解释的必要。

不过呢,为了让这篇文章更加完善或者说完整一点,我还是写一下我的理解吧!

.gitignore 为了使 Git 忽略某些文件,不对某些特定的文件进行跟踪。例如:.idea .vscode *.log 等。
.gitkeep 为了使 Git 保留一个空目录而创建的一个起标识作用的无意义文件。

总结

.gitkeep 文件是创建在一个空目录下的标识性文件,其作用是为了使 Git 保留该空目录(在有了 .gitkeep 文件后就不是空目录了)。
.gitkeep 文件的文件名是社区的一个约定,仅仅只是为了起到一个统一的目的,使开发者在看到该文件时就知道其作用。
.gitkeep 文件和官方没有任何关系,并不是官方定义的 Git 的系统文件。
.gitkeep 文件应该是一个目录下的唯一文件,当该目录下有了其他文件时,就应该删除 .gitkeep 文件。
.gitkeep 文件和 .gitignore 文件没有任何关系;前者是为了使 Git 保留一个空目录,后者是为了使 Git 忽略某些指定的文件。
.gitkeep 文件并不是强制规定,只是一个约定,完全可以用自己喜欢的方式,但 .gitkeep 文件无疑是被大多数开发者所承认的一个约定或者说是最佳实践,推荐使用。
————————————————
版权声明:本文为CSDN博主「十甫寸木南」的原创文章。
原文链接:什么是 .gitkeep ?_十甫寸木南的博客-CSDN博客_gitkeep是什么文件

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值