乐趣区

.gitkeep是什么? .gitignore和.gitkeep之间的区别(译)

你是不是在 git 工程里遇到过.gitkeep 文件?如果你通过 angular 脚手架来生成 angular2 或者 angular4 工程,你会发现.gitkeep 文件在./src/app/assets 文件夹里。你对着个文件感到奇怪吗?我们都知道我们的老朋友.gitignore。你也许会觉得它是.gitignore 的兄弟。git 提供给我们这个神奇的文件有什么特殊的属性吗?
.gitkeep 是什么
在知道这件事之前,我们必须要先了解 git 是不能追踪空的目录的。如果你有一个空的目录,git 会对它视而不见。但这是我们想要的一个特性,现在你放一个文件到这个目录中,git 就能开始追踪这个目录了,这个文件可以是任何东西,这个文件也可以包含任何东西。
所以.gitkeep 是什么?通常,团队里把这个神奇的文件命名为.gitkeep。其他人就能很容易理解,git 这个软件没有赋予它其他的特性相对于.gitignore。
现在如果你希望追踪获取 push 一个空的目录,你只要创建一个.gitkeep 文件就可以,其他的开发者就能很容易理解,一般来说,人们把它用于 assets 文件夹或者 log 文件夹(因为一上来这两个文件夹可能是空的)。注意:千万不要把.gitkeep 写到.gitignore 里,这样的话,所有的空目录都不会被追踪了,也就提交不了了。
有一小部分团队会把.gitignore 文件放到空的文件夹中,这样的话大部分人看到这个文件就会感到困惑。.gitignore 文件是用来让 git 去忽略你版本控制系统中不需要的文件的。所以也可以利用这个方法,在空目录中添加一个.gitignore 文件让 git 来追踪他们。
总结:对于空目录的追踪我们可以用.gitkeep 来做。

退出移动版