【问题标题】:.gitignore exclude files in directory but not certain directories.gitignore 排除目录中的文件,但不排除某些目录
【发布时间】:2011-08-01 19:39:35
【问题描述】:
application/cache/*
application/cache/folder/*
application/cache/folder/onemorefolder/*

这似乎不起作用。当我克隆项目时,没有"application/cache"文件夹或"application/cache/folder"文件夹等...

我希望缓存文件夹中的文件没有被缓存但文件夹被缓存,以便文件夹权限转移并存在。

【问题讨论】:

    标签: git gitignore


    【解决方案1】:

    Git 不跟踪文件夹,只跟踪文件,因此如果您忽略文件夹中的所有内容,Git 将不会跟踪任何内容。您可以在每个目录(application/cacheapplication/cache/folderapplication/cache/folder/onemorefolder/)中添加一个.gitignore文件,内容如下:

    *
    !.gitignore
    

    然后,您可以添加这些目录,并且只会添加每个目录中的 .gitignore 文件 - 但这意味着现在将跟踪目录(即,在克隆时创建)。

    【讨论】:

    • 用于此目的的 .gitignore 文件可以为空。
    • 如果文件夹被上层.gitignore 文件忽略,则它们可以为空。在这种情况下,这正是我的答案。
    • 更明智和更简单的是使用一个名为.gitkeep的文件,然后你不必在.gitignore文件中放置任何东西。
    • @kevpie 文件夹中有其他文件,他不希望它们被跟踪。如果 .gitignore 文件为空,这些文件显然会被跟踪。
    • 出于同样的目的,我使用.gitkeep 而不是.gitignore。这对我来说更有意义
    【解决方案2】:

    Git 不跟踪空目录。只需在要提交的文件夹中添加一些空的占位符文件即可。

    touch application/cache/.keep
    git add -f application/cache/.keep
    

    也对每个“空”文件夹执行此操作。稍后您可以忽略这些文件,它们实际上只是为了确保 git 在克隆时创建这些目录。 .gitignore 中的条目可防止文件夹中的其他文件被跟踪(除非您使用 git add -f 强制它;))。

    【讨论】:

      【解决方案3】:

      还有另一种可能更清洁的方法来做到这一点。而不是在要保留的文件夹中包含子 .gitignore 文件。您可以将它放在根 .gitignore 中,如下所示:

      application/cache/*
      application/cache/folder/*
      application/cache/folder/onemorefolder/*
      !*.gitkeep
      

      现在只需创建空的 .gitkeep 文件并将其提交到上面列出的目录中。然后将使用这些 .gitkeep 文件跟踪该文件夹,但不会跟踪任何内容。

      【讨论】:

      • 或者只是!*.gitkeep :)
      • 问题是如何忽略文件夹的内容但保留文件夹本身。所以我相信我的答案是站得住脚的,只是拥有 !*.gitkeep 不会忽略文件夹的内容。
      【解决方案4】:

      您可以在每个文件中放置一个 .gitignore 文件(如 mipadi 所说)或在您的根 .gitingnore 文件中制作类似的内容

      /assets/*/
      /assets/*.*
      

      对我来说很好用

      【讨论】:

      • 这有效,但前提是 repo 使用文件扩展名。不会排除 root/LICENSE-FILE 之类的内容。
      【解决方案5】:

      Visual Studio 不喜欢接受的答案。我必须在 * 之前添加一个新行才能使其正常工作。

      # Ignore all files in this folder.
      *
      !.gitignore
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 2018-01-08
        • 2019-03-23
        • 2020-08-04
        相关资源
        最近更新 更多