【发布时间】:2011-11-05 23:47:01
【问题描述】:
.gitignore 和.gitkeep 有什么区别?它们是同一个东西但名称不同,还是它们都具有不同的功能?
我似乎无法在 .gitkeep 上找到太多文档。
【问题讨论】:
.gitignore 和.gitkeep 有什么区别?它们是同一个东西但名称不同,还是它们都具有不同的功能?
我似乎无法在 .gitkeep 上找到太多文档。
【问题讨论】:
.gitkeep 没有记录,因为它不是 Git 的功能。
Git cannot add a completely empty directory。想要在 Git 中跟踪空目录的人已经创建了将名为 .gitkeep 的文件放在这些目录中的约定。该文件可以被称为任何东西; Git 对这个名称没有特殊意义。
有一个相互竞争的约定是将.gitignore 文件添加到空目录以对其进行跟踪,但有些人认为这令人困惑,因为目标是保留空目录,而不是忽略它们; .gitignore 还用于列出 Git 在查找未跟踪文件时应忽略的文件。
【讨论】:
README 文件放在包含有关该子目录将用于什么的一些信息的其他空子目录中不是更好的解决方案吗?有一个名为 .gitkeep 的文件实际上不是 git 的一部分,这似乎令人困惑。
.gitignore 文件:* 和!.gitignore 足以清楚地传达正在发生的事情。如果需要详细说明,请使用 # 语法在文件顶部添加注释。
.keep 文件而不是 .gitkeep 来保留这些空文件夹,因为 git 不是唯一不这样做的源代码控制系统跟踪空文件夹。更多细节在这里:github.com/rails/rails/issues/2800
.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
('#'表示cmets。)
【讨论】:
!前面需要.gitignore?是为了逃避点吗?
! 否定以下部分,就像它通常在编程中所做的那样。
!.gitignore放到一个git忽略文件中,要么添加文件然后编辑它,要么用适当的内容强制添加它(“*”忽略所有内容,或者什么都不简单确保文件夹存在)further example.
Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked. ------ 如果不是,并且您没有进行强制添加,您可能会忘记它。在微不足道的情况下,没问题,但如果它是一个更大的文件,你可能会感到不安。使用!.gitignore 可以防止你在自己的脚下开枪。我更喜欢它,过去曾烧伤过自己。
.gitignore
是一个文本文件,包含目录中的文件列表,git 将忽略或不在存储库中添加/更新。
.gitkeep
由于 Git 会删除或不向存储库添加空目录,因此 .gitkeep 是一种将空目录保留在存储库中的技巧(我不认为它被正式命名为 Git 的一部分)。
只需执行touch /path/to/emptydirectory/.gitkeep 来添加文件,Git 现在就可以在存储库中维护这个目录了。
【讨论】:
.gitignores。
.gitkeep 文件中提及空目录列表,但它不会跟踪空目录,仅跟踪.gitkeep 文件所在的文件夹。为什么会这样?
.gitignores 如何让您不必每次都指定每个文件夹的完整路径?我想我遗漏了一些明显的东西。
许多人更喜欢只使用.keep,因为约定与 git 无关。
【讨论】:
这不是对原始问题“.gitignore 和 .gitkeep 有什么区别?”的回答。但是在这里发布以帮助人们以简单的方式跟踪空目录。跟踪空目录并知道.gitkeep 不是git 的官方部分,
只需在其中添加一个空(没有内容).gitignore 文件。
所以例如如果你有 /project/content/posts 并且有时 posts 目录可能是空的,那么创建一个空文件 /project/content/posts/.gitignore 没有内容来跟踪该目录及其在 git 中的未来文件。
【讨论】: