現有目錄結構如下
├── 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 協議》,轉載必須註明作者和本文連結