[Git].gitignoreで無視したディレクトリの中のサブディレクトリを追跡する
.gitignoreで無視したディレクトリの中のサブディレクトリを追跡する
以下のようなファイル構造の時に、directory
を無視しつつ、subdirectory
だけを追跡したいと考えます。
│ .gitignore │ └─directory │ not-important.txt │ └─subdirectory important.txt
.gitignoreに以下のように書くと、うまくいきません。
これは、 ディレクトリを無視する構文(/directory/
)を使用すると、それ以下のファイルは常に無視をされる ためです
/directory/ !/directory/subdirectory
そのため、 ディレクトリの無視ではなく、ファイルのワイルドカードでの無視 を使用します。
ファイル単位で無視 -> ディレクトリを追跡 という手順を踏むと、うまくいきます。
# ファイル単位で無視 /directory/* # ディレクトリを追跡 !/directory/subdirectory/
git add .
, git status
を叩くと、追加されていることが確認できます
>git add . >git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: .gitignore new file: directory/subdirectory/important.txt
さらに前の行にて無視されているとき
さらに前の行にて/directory
が無視されているときは、ファイル単位で無視 -> ディレクトリを追跡 を繰り返し行います
# ファイル単位で無視 /* # ディレクトリを追跡 !/directory/ # ファイル単位で無視 /directory/* # ディレクトリを追跡 !/directory/subdirectory/
参考
git - .gitignore exclude folder but include specific subfolder - Stack Overflow