gitは、特定のサブフォルダにあるファイルを除いて、特定のタイプのすべてのファイルを無視します


192

私はこのようなディレクトリ構造を持っています:

  • ルート
    • folder1
      • abc.json
      • def.json
      • somedir
        • more.json
    • folder2
      • qwe.json
      • rty.json
    • スペック
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

ここで、を使用して、.gitignoreにある*.jsonファイルを除くすべてのファイルを無視したいと思いますspec。私は使用しない.gitignorefolder1folder2そこにこれらのトンがあり、彼らはたくさんに追加されます、と私は私が右に移動するのを忘れますと確信しているので、.gitignore場所にファイルを。

さらに、jsonファイルを含むネストされたディレクトリがさらに存在する可能性があり、このルールはすべてのサブディレクトリにも適用する必要があります。

では、特定のサブディレクトリを除いて、タイプのすべてのファイルを無視するにはどうすればよいですか?

回答:


302

!パターンを否定するオプションのプレフィックス。以前のパターンによって除外された一致するファイルは、再び含まれます。否定されたパターンが一致する場合、これは優先順位の低いパターンソースをオーバーライドします。

http://schacon.github.com/git/gitignore.html

*.json
!spec/*.json

4
必要に応じて、!/ *。jsonを含む.gitignoreを仕様に追加することもできます。
David Mitchell

2
ありがとう!私の場合は、スペックディレクトリの何も無視したくないことに気づきました。だから私は非常にシンプルなもので済むことができ!specます。魅力のように機能します。
アレックス・ウェイン

7
Amberの回答は、specが最上位のディレクトリ(/ specなど)の場合は機能しますが、specがサブディレクトリ(/ a / specやa / b / specなど)の場合は機能しません。git 1.7.5.4を使用
Peter Lewis

7
@PeterLewis(将来の訪問者向け):このようなケースは、関連するサブディレクトリに.gitignoreファイルを作成することで処理できます。
cmbuckley

3
私にとってのこの解決策はjsonspec直接のファイルのみを無視somedirし、質問のサブディレクトリにあるファイルは無視しませんでした。もコミットされた!spec/**/*.jsonことを確認するために使用する必要がmore_mocks.jsonありました。
リース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.