82
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.gitignore で無視したフォルダ配下の、特定のフォルダだけ無視しないようにする方法

Last updated at Posted at 2015-04-03

【末尾に追記あり】
この記事は Git のバージョン 2.6 時点での話です。2.7からは簡単にできるようになりました。


.gitignore で、あるフォルダを無視したとします。
で、その配下の特定のフォルダだけ、やっぱり git で管理したいとします。

たとえば

  • folder1 ← このフォルダ配下は無視したい
    • folder1-1
      • folder1-1-1
      • folder1-1-2 ← でも、このフォルダだけは無視したくない
      • folder1-1-3
    • folder1-2
  • folder2
  • folder3

/folder1 は無視したい。
でも /folder1/folder1-1/folder1-1-2 は無視したくない。
とします。

ダメな例

とりあえず、.gitignore に ! 記法を使って

/folder1
!/folder1/folder1-1/folder1-1-2

で、いけるかと思ったらダメでした。
どうも一度 /folder1 を無視してしまうと、その配下のものは ! を使っても、こっちの世界に戻ってこないっぽい。

できた例

こう書いたらいけました。

/folder1/*
!/folder1/folder1-1
/folder1/folder1-1/*
!/folder1/folder1-1/folder1-1-2

/folder1 配下のファイルは無視。
でも /folder1/folder1-1 は無視しない。
/folder1/folder1-1/ 配下のファイルは無視。
でも /folder1/folder1-1/folder1-1-2 は無視しない。

ひとつひとつ階層を掘って、順番に書いていけばOKっぽい。

しかし

できたとはいえ、えらく冗長ですよね……
もっとシンプルな書き方ないのかなあ……


【追記】Git 2.7 から簡単にできるようになった

Git 2.7 から、

どうも一度 /folder1 を無視してしまうと、その配下のものは ! を使っても、こっちの世界に戻ってこないっぽい。

この部分の仕様が変わり、こっちの世界に戻ってくるようになりました。
なのでこう書くだけでOKです 🙌

/folder1
!/folder1/folder1-1/folder1-1-2

参考

82
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?