我如何将一个空的目录(不包含文件)添加到一个Git存储库中?


当前回答

正如其他答案中所描述的那样,Git 无法在其排序区域中代表空的目录(见 Git FAQ ) 但是,如果为您的目的,一个目录是空的,如果它只包含一个.gitignore 文件,那么您只能通过:

find . -type d -empty -exec touch {}/.gitignore \;

其他回答

没有办法 Git 跟踪目录,所以唯一的解决方案是在您想要 Git 跟踪的目录中添加一个位置持有者文件。

文件可以被命名并包含你想要的任何东西,但大多数人使用一个空白的文件称为.gitkeep (尽管有些人更喜欢VCS诊断的.keep)。

预定. 标记它作为一个隐藏的文件。

另一个想法是添加一个 README 文件,解释该目录将用于什么。

PowerShell 版本:

在目录中找到所有空的文件夹 添加一个空的.gitkeep 文件在那里

Get-ChildItem 'Path to your Folder' -Recurse -Directory | Where-Object {[System.IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0} | ForEach-Object { New-Item ($_.FullName + "\.gitkeep") -ItemType file}

您可以! 查看 Git FAQ。

目前,Git指数的设计仅允许文件列出,并且没有人有足够的能力进行更改,以便空的目录对这种情况有足够的关注,以便解决它。

我也面临着空的目录的问题. 使用存储文件的问题是,你需要创建它们,并删除它们,如果它们不再需要(因为后来添加了子目录或文件。

这就是为什么我决定写一个开源工具,可以自动管理创建/删除此类存储文件。 它是为.NET 平台写的,并在 Mono (.NET for Linux) 和 Windows 中运行。

只需看看: http://code.google.com/p/markemptydirs

如果你想添加一个文件夹,将存储大量的过渡数据在多个性别目录,那么一个方法是将这样的东西添加到你的根.gitignore。

/app/data/**/*!/app/data/**/*.md

然后你可以承诺描述的 README.md 文件(或白色文件,不管,只要你可以针对它们独特的类似于 *.md 在这种情况下)在每个目录,以确保所有目录仍然是 repo 的部分,但文件(有扩展)被忽略。

您可以用 xml / 图像文件或任何东西填写所有这些目录,并随着时间的推移在 /app / data / 下添加更多目录,因为您的应用程序开发的存储需要(使用 README.md 文件来燃烧,描述每个存储目录的准确性)。

此分類上一篇