Git工程中.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 文件无疑是被大多数开发者所承认的一个约定或者说是最佳实践,推荐使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.git是一个特殊的文件夹,它是Git版本控制系统用来管理仓库的核心。它包含了Git仓库的所有元数据,如历史记录、分支、标签等。 .gitkeep是一个空文件,用于占位符的作用。在进行版本管理时,Git不会主动跟踪空目录,所以当项目存在空目录的时候,Git会忽略空目录。为了将空目录上传到Git仓库,可以在空目录下创建一个.gitkeep空文件,起到占位的作用。.gitkeep文件只是一种约定俗成的规范名称而已,可以使用其他无意义的文件名作为占位文件。 同时,.gitignore文件是告诉Git工具需要忽略哪些不需要被跟踪的文件或目录的配置文件。可以在.gitignore文件写入需要忽略的文件或目录的匹配规则,让Git在进行版本控制时忽略这些文件或目录。 另外,如果希望某些文件或目录在本地仓库忽略,而不是在全局.gitignore规则设置,可以将这些规则写入.git/info/exclude文件。这样,这些规则只会对当前仓库生效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Git的工具包Git-Tools.zip](https://download.csdn.net/download/weixin_39840588/11359317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Git文件.gitignore和.gitkeep用法解析](https://blog.csdn.net/qq_42482078/article/details/129901545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值