.gitignore
和.gitkeep
之间有什么区别?它们是不同名称的同一个东西,还是它们都起着不同的作用?我似乎无法在.gitkeep
上找到太多文档。
答案 0 :(得分:2982)
.gitkeep
没有记录,因为它不是Git的功能。
Git cannot add a completely empty directory。想要在Git中跟踪空目录的人已经创建了将名为.gitkeep
的文件放在这些目录中的约定。该文件可以被称为任何东西; Git对此名称没有特别的意义。
有一个竞争惯例是将.gitignore
文件添加到空目录以跟踪它们,但有些人认为这令人困惑,因为目标是保留空目录,而不是忽略它们; .gitignore
也用于列出Git在查找未跟踪文件时应忽略的文件。
答案 1 :(得分:273)
.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
('#'表示评论。)
答案 2 :(得分:114)
.gitignore
是一个文本文件,包含目录中git将忽略或不在存储库中添加/更新的文件列表。
.gitkeep
由于git删除或不添加空目录到repo .gitkeep是一种黑客攻击(我不认为它被正式命名为git的一部分)来保留repo中的空目录。
只需执行touch /path/to/emptydirectory/.gitkeep
即可添加文件,git现在可以在存储库中维护此目录。
答案 3 :(得分:1)
许多人只喜欢使用.keep
,因为约定与git无关。
答案 4 :(得分:0)
这不是对原始问题“ .gitignore和.gitkeep有什么区别?”的答案。但在此处发布内容可以帮助人们以一种简单的方式跟踪空目录。要跟踪空目录并知道 key1 key2 key3 msg
0 abc aa aa happy
1 aa efg aa mad
2 aa aa xyz smile
3 sdf sdf aa great
不是git的正式组成部分,
只需在其中添加一个空的(无内容)let arr13 = ["name", "age", "hobby", "habit", "vocation"];
let arr14 = ["superhero", 40, "swimming", "drinking", "programming"];
let mapped = {};
for (let i = 0; i < arr13.length; i++) {
mapped[arr13[i]] = arr14[i];
}
console.log(mapped);
文件。
例如如果您有.gitkeep
,有时.gitignore
的目录可能是空的,则创建一个没有内容的空文件/project/content/posts
,以在git中跟踪该目录及其将来的文件。