.gitignore和.gitkeep之间有什么区别?它们是相同的东西,有不同的名称,还是它们都有不同的功能?
.gitignore
.gitkeep
我在.gitkeep上找不到多少留档。
.gitkeep没有记录在案,因为它不是Git的功能。
Git无法添加完全空的目录。想要在Git中跟踪空目录的人已经创建了将名为.gitkeep的文件放入这些目录的约定。该文件可以称为任何名称;Git对这个名称没有赋予特殊意义。
有一个竞争的约定,即向空目录添加.gitignore文件以跟踪它们,但有些人认为这令人困惑,因为目标是保留空目录,而不是忽略它们;.gitignore也用于列出Git在查找未跟踪文件时应该忽略的文件。
是一个文本文件,包含目录中git将忽略或不在存储库中添加/更新的文件列表。
由于Git删除或不将空目录添加到存储库中,因此. git保持是一种将空目录保留在存储库中的黑客(我不认为它正式命名为Git的一部分)。
只需执行touch /path/to/emptydirectory/.gitkeep即可添加文件,Git现在将能够在存储库中维护此目录。
touch /path/to/emptydirectory/.gitkeep
.gitkeep只是一个占位符。一个虚拟文件,所以Git不会忘记目录,因为Git只跟踪文件。
如果您想要一个空目录并确保它对Git保持“干净”,请创建一个.gitignore,其中包含以下行:
# .gitignore sample# Ignore all files in this dir...* # ... except for this one.!.gitignore
如果您希望Git只能看到一种类型的文件,下面是一个如何过滤掉所有文件的示例,除了.gitignore和所有.txt文件:
.txt
# .gitignore to keep just .txt files# Filter everything...* # ... except the .gitignore...!.gitignore # ... and all text files.!*.txt
许多人更喜欢只使用.keep,因为约定与git无关。
.keep
这不是对最初问题“. gitignore和. git的区别是什么?”的回答,而是在这里发布以帮助人们以简单的方式跟踪空目录。要跟踪空目录并知道.gitkeep不是git的官方部分,
只需在其中添加一个空(没有内容).gitignore文件。
因此,例如,如果您有/project/content/posts,有时posts目录可能为空,那么创建空文件/project/content/posts/.gitignore,没有内容来跟踪该目录及其未来在git中的文件。
/project/content/posts
posts
/project/content/posts/.gitignore