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

Ива*_*вац 65 git gitignore

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

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

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

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

  • 数据/
    • 图片/

所以,我只想要提交空文件夹结构.

Joo*_*aan 108

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

在Windows上通过右键单击文件夹中的内容并从中选择:Git bash.然后输入:touch .gitkeep

  • 但是,`git`前缀给出了一个暗示为什么还有一个无意义的空文件. (16认同)
  • 那么`.keep`呢?git是不可知的. (11认同)
  • 是的,你调用文件的方式实际上并不重要 (3认同)
  • git前缀适用于git生成的文件.刚从这个讨论这个确切问题的其他线程来到这里:http://stackoverflow.com/questions/115983/how-can-i-add-an-empty-directory-to-a-git-repository (2认同)

Nev*_*nel 85

在Git中,你不能提交空文件夹,因为Git实际上并不保存文件夹,只保存文件.如果您确实希望它们为"空"(即您没有可提交的内容),则必须在这些目录中创建一些占位符文件.


ddo*_*nko 48

这很简单.

告诉.gitignore要忽略除了.gitignore要保留的文件夹以外的所有内容.放入.gitignore要保留在仓库中的文件夹.

最顶层的内容.gitignore:

# ignore everything except .gitignore and folders that I care about:
*
!images*
!.gitignore
Run Code Online (Sandbox Code Playgroud)

在嵌套images文件夹中,这是您的.gitignore:

# ignore everything except .gitignore
*
!.gitignore
Run Code Online (Sandbox Code Playgroud)

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

显然,回购邮件中的文件夹不会是空的,因为每个文件夹中都有.gitignore,但是该部分可以忽略.:)


emj*_*365 30

递归创建.gitkeep文件

find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
Run Code Online (Sandbox Code Playgroud)

  • 这应该是选择的答案。 (3认同)
  • @philiporlando 在 Windows 上使用 git bash。 (2认同)

Kar*_*oll 7

传统上,每当我想要提交并清空目录结构时,我都会创建结构,然后在叶子目录中放置一个名为的空文件empty.txt.

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

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

  • 或者也许是`.empty`. (3认同)