.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来做。