.gitignore
和 .gitkeep
有什么区别?它们是名称不同的同一事物,还是它们都有不同的功能?
我似乎找不到太多关于
.gitkeep
的文档。
.gitkeep
没有记录,因为它不是 Git 的特性。
Git 无法添加一个完全空的目录。想要在 Git 中跟踪空目录的人们已经创建了将名为
.gitkeep
的文件放在这些目录中的约定。该文件可以被称为任何东西; Git 没有给这个名字赋予特殊意义。
有一个竞争约定,将
.gitignore
文件添加到空目录以跟踪它们,但有些人认为这令人困惑,因为目标是保留空目录,而不是忽略它们; .gitignore
还用于列出 Git 在查找未跟踪文件时应忽略的文件。
.gitkeep
只是一个占位符。一个虚拟文件,因此 Git 不会忘记目录,因为 Git 只跟踪文件。
如果您想要一个空目录并确保它对 Git 保持“干净”,请创建一个包含以下行的
.gitignore
:
# .gitignore sample
# Ignore all files in this dir...
*
# ... except for this one.
!.gitignore
如果你希望只有一种类型的文件对 Git 可见,这里是一个如何过滤掉所有内容的示例,除了
.gitignore
和所有 .txt
文件:
# .gitignore to keep just .txt files
# Filter everything...
*
# ... except the .gitignore...
!.gitignore
# ... and all text files.
!*.txt
.gitignore
是一个文本文件,包含目录中的文件列表,git 将忽略或不在存储库中添加/更新这些文件。
.gitkeep
由于 Git 删除或不向存储库添加空目录,.gitkeep 有点像 hack(我不认为它正式命名为 Git 的一部分)以在存储库中保留空目录。
只要做一个
touch /path/to/emptydirectory/.gitkeep
来添加文件,Git现在就可以在存储库中维护这个目录了。
许多人更喜欢只使用
.keep
因为约定与 git 无关。
这不是原始问题“.gitignore 和 .gitkeep 之间有什么区别?”的答案。但在这里发帖是为了帮助人们以简单的方式跟踪空目录。跟踪空目录并知道
.gitkeep
不是 git 的官方部分,
只需在其中添加一个空的(没有内容)
.gitignore
文件。
所以例如如果你有
/project/content/posts
,有时 posts
目录可能是空的,那么创建空文件 /project/content/posts/.gitignore
没有内容来跟踪该目录及其在 git 中的未来文件。
文件
.gitignore
用于告诉 Git 它应该忽略哪些文件和文件夹。通常,这些文件是构建产物、临时文件或不属于存储库的其他类型的文件。 Git 将忽略任何符合 .gitignore
文件中模式的目录或文件。
例子:
# Ignore .DS_Store files
.DS_Store
# Ignore build artifacts
build/
# Ignore log files
*.log
相反,在 Git 中使用
.gitkeep
文件来维护一个目录,否则该目录将是空的。默认情况下,Git 不跟踪空文件夹,因此如果您希望将它保留在您的存储库中,您必须将 .gitkeep
文件添加到该目录。文件名比文件的实际内容更重要。
.gitkeep
文件示例
# This file is used to keep the directory empty in Git
总而言之。
.gitignore
命令用于告诉 Git 要忽略哪些文件和文件夹。要维护否则为空的 Git 目录,请使用 .gitkeep
。它们彼此不同,具有不同的功能。