hello/
フォルダ構造内の「hello」という名前のすべてのフォルダを無視します
hello/*
トップレベルのフォルダ「hello」のみを無視します。
どうしてこれなの?この動作を説明しているhttp://git-scm.com/docs/gitignoreの一節を指摘してください。
これは厄介に思えるかもしれませんが、これにより、複数の方法でディレクトリを照合できます。ファイルまたはディレクトリはどこでも、ディレクトリはどこでも、または最上位のディレクトリです。この汎用性は非常に便利で、雑然としないようにすることができ.gitignore
ます。
(参考までに、Git 1.8.2 +を使用git check-ignore
している場合は、これをデバッグするために使用できます。)
を入力foo
すると、という名前のすべてのファイルとディレクトリに一致しますfoo
。
を置くとfoo/
、という名前のディレクトリにのみ一致しfoo
ます。
パターンがスラッシュで終わっている場合、以下の説明のためにパターンは削除されますが、ディレクトリとの一致のみが検出されます。言い換えると、foo /はディレクトリfooとその下のパスに一致しますが、通常のファイルまたはシンボリックリンクfooには一致しません(これは、Gitでのpathspecの一般的な動作方法と一致しています)。
のようにを追加すると*
、foo/*
(に対して.gitignore
)ファイルグロブとして扱われます。
それ以外の場合、GitはパターンをFNM_PATHNAMEフラグを指定したfnmatch(3)による消費に適したシェルグロブとして扱います。パターン内のワイルドカードはパス名内の/と一致しません。たとえば、「Documentation/*。html」は「Documentation / git.html」と一致しますが、「Documentation / ppc /ppc.html」または「tools / perf / Documentation /perf.html」とは一致しません。
したがって、のfoo/*
場合、Gitは最上位ディレクトリ内のすべてのファイルとディレクトリを無視しますfoo
。それは無視するfoo/dir
、foo/file.txt
などを(技術的には、これは無視しませんfoo
自体は、それはその子を無視します。しかし、Gitは、ディレクトリを追跡していないので、それは同じ効果があります。)
参考までにfoo/**
、同じ動作をします。
私の推薦:
foo
トップレベルのディレクトリを無視したい場合、IMOは次のルールを使用するのが最も明確です。
先頭のスラッシュはパス名の先頭と一致します。たとえば、「/ *。c」は「cat-file.c」と一致しますが、「mozilla-sha1 /sha1.c」とは一致しません。
したがって、を書く/foo/
ことができfoo
、トップレベルのディレクトリは無視されますが、それ以外の場所は無視されません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加