.gitignore 和 .gitkeep 有什么区别?

问题描述 投票:0回答:6

.gitignore
.gitkeep
有什么区别?它们是名称不同的同一事物,还是它们都有不同的功能?

我似乎找不到太多关于

.gitkeep
的文档。

git gitignore
6个回答
4390
投票

.gitkeep
没有记录,因为它不是 Git 的特性。

Git 无法添加一个完全空的目录。想要在 Git 中跟踪空目录的人们已经创建了将名为

.gitkeep
的文件放在这些目录中的约定。该文件可以被称为任何东西; Git 没有给这个名字赋予特殊意义。

有一个竞争约定,将

.gitignore
文件添加到空目录以跟踪它们,但有些人认为这令人困惑,因为目标是保留空目录,而不是忽略它们;
.gitignore
还用于列出 Git 在查找未跟踪文件时应忽略的文件。


457
投票

.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

147
投票
.gitignore

是一个文本文件,包含目录中的文件列表,git 将忽略或不在存储库中添加/更新这些文件。

.gitkeep

由于 Git 删除或不向存储库添加空目录,.gitkeep 有点像 hack(我不认为它正式命名为 Git 的一部分)以在存储库中保留空目录。

只要做一个

touch /path/to/emptydirectory/.gitkeep
来添加文件,Git现在就可以在存储库中维护这个目录了。


9
投票

许多人更喜欢只使用

.keep
因为约定与 git 无关。


2
投票

这不是原始问题“.gitignore 和 .gitkeep 之间有什么区别?”的答案。但在这里发帖是为了帮助人们以简单的方式跟踪空目录。跟踪空目录并知道

.gitkeep
不是 git 的官方部分,

只需在其中添加一个空的(没有内容)

.gitignore
文件。

所以例如如果你有

/project/content/posts
,有时
posts
目录可能是空的,那么创建空文件
/project/content/posts/.gitignore
没有内容来跟踪该目录及其在 git 中的未来文件。


2
投票

文件

.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
。它们彼此不同,具有不同的功能。

© www.soinside.com 2019 - 2024. All rights reserved.