web-dev-qa-db-ja.com

サブディレクトリ内の特定のファイルをGitで無視しますが、すべてではありません

私は次のような構造を持っています:

/root/
/root/data/
/root/data/script.php
/root/data/some.json
/root/data/feature/one.json
/root/data/feature/two.json
/root/data/other-feature/one.json
/root/data/other-feature/important-script.php

'/ data/...'パスの下にある.jsonファイルを無視しますが、gitはanyを無視しますが、 '/ data /'サブディレクトリが含まれることがあります。

http://で説明されているように、data/*.json*に一致しないため、gitignoreの単純な/は1つのディレクトリにのみ一致します。 git-scm.com/docs/gitignore 、「パターン形式」、箇条書き#6:

それ以外の場合、gitはパターンをfnmatch(3)がFNM_PATHNAMEフラグで使用するのに適したシェルグロブとして扱います。パターンのワイルドカードはパス名の/に一致しません。たとえば、「Documentation/*。html」は「Documentation/git.html」と一致しますが、「Documentation/ppc/ppc.html」または「tools/perf/Documentation/perf.html」とは一致しません。

これを行う簡単な方法はありますか、または各サブディレクトリにgitignoreファイルを積極的に追加する必要がありますか?

63

私は最近、そのような問題に関する投稿を書きました。 here を参照してください。

基本的に必要なのは、.gitignoreディレクトリに*.jsonとともに/data/を1つ入れることです。

[〜#〜] upd [〜#〜]:git 1.8.41.8.2 msysgitを使用している場合)/data/**/*.jsonのようなダブルスターパターンを使用することができます

83
Ivan Danilov

data/**/*.json.gitignoreディレクトリの/rootに配置して、異なるディレクトリに複数の.gitignoreファイルを配置しないようにすることができます

**/-任意のサブディレクトリの数に一致します(現在を含む)

例:data/**/*.jsonレコードはdata/1.jsondata/subfolder/2.jsondata/../../3.jsonを無視します

21
E.Monogarov

このパターンは、pngおよびjpgファイルのみを無視するデータサブフォルダーに対して機能します。

**/data/**/*.png
**/data/**/*.jpg
2
Aqib Mumtaz