如何将空目录(不包含文件)添加到Git存储库?
如何将空目录(不包含文件)添加到Git存储库?
使目录保持为空(在存储库中)的另一种方法是创建一个 .gitignore
该目录中包含以下四行的文件:
# Ignore everything in this directory
*
# Except this file
!.gitignore
然后你不必按照m104中的方式完成订单 解。
这样做的好处是,当你执行git状态时,该目录中的文件不会显示为“未跟踪”。
制造 @GreenAsJade评论持久性:
我认为值得注意的是,这个解决方案确切地解决了问题所要求的问题,但也许不是许多人在看这个问题时会一直在寻找的。此解决方案可确保目录保持为空。它说“我真的不想在这里检查文件”。与“我在这里没有任何要检查的文件相反,但我需要这里的目录,文件可能会在以后”。
你不能。见 Git FAQ。
目前设计的git索引 (暂存区)只允许文件到 被列出,没有人能胜任 使更改允许为空 目录已经足够关心了 这种情况可以解决它。
目录会自动添加 在其中添加文件时。那 是,目录永远不必添加 到存储库,并没有被跟踪 他们自己。
你可以说 ”
git add <dir>
“而它 将在那里添加文件。如果你真的需要一个目录 在结帐时你应该创建一个 文件在里面。 .gitignore效果很好 这个目的;你可以把它留空 或填写您的文件名称 期望出现在目录中。
创建一个名为的空文件 .gitkeep
在目录中,并添加。
您始终可以将README文件放在目录中,并说明您为什么要在存储库中使用此目录(否则为空)。
touch .keep
在Linux上,这会创建一个名为的空文件 .keep
。此名称优先于 .gitkeep
因为前者对Git不可知,而后者则与Git无关。其次,正如另一位用户所说, .git
应该为Git本身使用的文件和目录保留前缀约定。
或者,如另一个所述 回答,该目录可以包含描述性 README
要么 README.md
文件 代替。
当然,这要求文件的存在不会导致应用程序中断。
首先要做的事情:
一个空目录 不能成为Git版本控制系统下树的一部分。
它根本不会被跟踪。但有些情况下,“版本控制”空目录可能很有用,例如:
cache/
要么 logs/
目录许多用户建议:
README
文件或包含某些内容的其他文件,以使目录非空,或.gitignore
文件具有一种“反向逻辑”(即包括所有文件),最后,它们用于方法#1的相同目的。而 两种解决方案肯定都有效 我发现他们对Git版本化的有意义的方法不一致。
.gitignore
做一件事(保持 文件)与其意图完全相反(排除 文件),即使有可能吗?用一个 空 文件叫 .gitkeep
为了强制在版本控制系统中存在文件夹。
虽然看起来似乎没有那么大的区别:
您使用具有的文件 单 保留文件夹的目的。你没有放任何你不想放的信息。
例如,你应该使用自述文件作为有用信息的自述文件,而不是保留文件夹的借口。
关注点分离总是一件好事,你仍然可以添加一个 .gitignore
忽略不需要的文件。
命名它 .gitkeep
从文件名本身(也是如此)使它变得非常清晰和直接 给其他开发者,这对于共享项目和Git存储库的核心目的之一是这个文件的好处
如其他答案中所述,Git无法在其临时区域中表示空目录。 (见 Git FAQ。)但是,如果为了您的目的,如果目录是空的,如果它包含一个 .gitignore
只有文件,然后你可以创建 .gitignore
空目录中的文件只能通过:
find . -type d -empty -exec touch {}/.gitignore \;