我如何将一个空的目录(不包含文件)添加到一个Git存储库中?
当前回答
为什么我们需要空版本的文件夹
第一件事先:
一个空的目录不能在 Git 版本系统下成为树的一部分。
但有一些场景,在那里“版本”空的目录可能有意义,例如:
一些建议工作
放置一个 README 文件或其他包含某些内容的文件,以使目录不空,或创建一个.gitignore 文件,具有某种“逆逻辑”(即包含所有文件),最终服务于相同的目的的方法#1。
.Gitkeep方法
使用一个空白的文件称为.gitkeep 以强制文件夹在版本系统中的存在。
您使用一个文件,唯一的目的是保持文件夹. 您不会放置任何信息,你不想放置. 例如,您应该使用 READMEs 作为, 好, READMEs 有用的信息, 不是作为一个借口保持文件夹. 分离担忧总是一个好事, 你仍然可以添加一个.gitignore 忽略不需要的文件。
采用
其他回答
将.gitkeep 文件添加到空的目录中,并承诺。
touch .gitkeep
这是Git跟随的标准。
要将 Jamie Flournoy 的解决方案扩展到一个目录树上,您可以将此.gitignore 文件放在顶级目录中,并在 Git 应该跟踪的每个子目录中点击.keepdir。
# Ignore files but not directories. * matches both files and directories
# but */ matches only directories. Both match at every directory level
# at or below this one.
*
!*/
# Git doesn't track empty directories, so track .keepdir files, which also
# tracks the containing directory.
!.keepdir
# Keep this file and the explanation of how this works
!.gitignore
!Readme.md
在目录中创建一个名为.gitkeep 的空白文件,然后将其添加到 git。
这将是一个隐藏的文件在Unix类似系统的默认情况下,但它将迫使Git承认该目录的存在,因为它现在有内容。
此外,请注意,关于此文件的名称没有什么特别的。 你可能已经命名了它你想要的任何东西. 所有 Git 关心的是,文件夹里有什么东西。
touch .placeholder
在Linux上,它创建了一个名为.placeholder 的空白文件. 值得一提的是,这个名称是 agnostic 到 git,并在系统中的其他地方使用这种方法,例如 /etc/cron.d/.placeholder. 第二,正如另一个用户指出的那样,.git 预定协议可以为 Git 自己用于配置目的的文件和目录进行备份。
否则,正如另一个答案中所指出的那样,目录可能包含一个描述的 README.md 文件。
无论如何,这都需要文件的存在不会导致您的应用程序破裂。
添加另一个选项给女士。
假设你想添加一个目录到 git,这对于所有与 git 相关的目的,应该保持空白,从来没有跟踪其内容,一个.gitignore 如这里多次提议,会做这个技巧。
形式,如上所述,是:
*
!.gitignore
$ echo "*" > .gitignore && echo '!.gitignore' >> .gitignore && git add .gitignore
#!/bin/bash
dir=''
if [ "$1" != "" ]; then
dir="$1/"
fi
echo "*" > $dir.gitignore && \
echo '!.gitignore' >> $dir.gitignore && \
git add $dir.gitignore
使用此,您可以从您想要添加的目录中运行它,或者将目录引用为第一个和唯一的参数:
$ ignore_dir ./some/directory
另一个选项(回复 @GreenAsJade的评论),如果你想跟踪一个空的文件夹,可能在未来包含跟踪的文件,但将是空的现在,你可以从.gitignore 文件中删除 *,并检查它。
!.gitignore
我建议在文件中保持一个行是,它给了.gitignore 目的。 否则,某些下行可能会认为要删除它. 如果你在线上放一个评论,这可能有帮助。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 如何复制在bash所有目录和文件递归?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式