Git忽略除子文件夹以外的目录中的所有内容

nic*_*715 35 git gitignore subdirectory

这是我的文件夹结构:

data/
    .gitignore
    uploads/
        .gitignore
Run Code Online (Sandbox Code Playgroud)

我想提交文件夹,但不提交其中的文件.

所以我在每个文件夹中添加了一个.gitignore文件,其中包含以下内容:

# Ignore everything in this directory
*
# Except this file
!.gitignore
Run Code Online (Sandbox Code Playgroud)

问题是*匹配目录也只有git跟踪data/.gitignore

kai*_*ser 60

请不要滥用 .gitignore文件.最好坚持使用默认方法,以便后来开发人员可以快速进入您的项目.

  1. 在没有.gitkeep文件的情况下在要提交的文件夹中添加空文件
  2. 排除文件夹,但不.gitkeep包括 .gitignore文件中的文件夹.

    folder/*
    !folder/.gitkeep
    
    Run Code Online (Sandbox Code Playgroud)

这会忽略文件夹中的所有文件,但不会忽略.gitkeep文件.现在,该文件夹将仅.gitkeep作为内容提交文件.

  • 仍然忽略子目录。-1 (3认同)
  • 因为`.gitignore`告诉每个后来的开发人员_他/他必须查看该文件_只是为了看不到任何被忽略的东西.`.gitignore`文件也不应设置为主目录以外的任何目录.如果你这样做,那么每个人都必须查看所有子文件夹,看看是否有任何被忽略的东西(并发现没有什么可以忽略),看看实际上在repo或部署管道中是什么.不要为以后的开发人员添加不必要的复杂性_just因为你是懒惰的而且不遵守约定. (2认同)

nic*_*715 36

解决方案非常简单,添加!*/到.gitignore文件中,只会忽略当前文件夹中的文件

# Ignore everything in this directory
*
# Except this file
!.gitignore
# Except folders
!*/
Run Code Online (Sandbox Code Playgroud)