gitignore 忽略目錄下檔案僅保留目錄形態

Mr-houzi發表於2020-08-10

現有目錄結構如下

├── public                     
    │── x1
    │   │── file1
    │   └── file2
    │── x2
    │   │── file3
    │   └── file4
    └── thumb
        │── file5
        └── file6                    

想要忽略 x1,x2 目錄及全部檔案,忽略 thumb 目錄下的檔案保留 thumb 目錄結構。

建立 public/.gitignore 檔案,語義為“忽略 當前目錄下的全部檔案和目錄,但不忽略 thumb 目錄”。

# public/.gitignore
# 忽略
*

# 不忽略
!.gitignore
!thumb/

但是,這樣不能滿足我們的要求,雖然忽略了 x1-xn 的目錄及其下檔案,保留了 thumb 目錄,但 thumb 目錄下的檔案也被保留下來,我們要的是隻保留 thumb 目錄結構。

再建立 public/thumb/.gitignore 檔案,進行處理。語義為“忽略當前目錄的所有檔案,但不忽略 .gitignore 檔案”。

# public/thumb/.gitignore

*
!.gitignore

可以看到 public/.gitignore 檔案和 public/thumb/.gitignore 檔案對於 thumb 目錄的忽略規則是由衝突的。因為當前目錄的規則優先順序高於父級目錄定義的規則,所以提交 git 後,thumb 目錄下僅存在 .gitignore 檔案,thumb 目錄將得以保留。

若沒有!.gitignore這條規則,thumb 目錄下的所有內容,將全部被忽略,目錄下沒有內容,提交 git 後,目錄不會被提交。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章