gitignoreの例



Gitignore Example



名前

gitignore-無視する意図的に追跡されていないファイルを指定します

あらすじ

$ XDG_CONFIG_HOME / git / ignore、$ GIT_DIR / info / exclude、.gitignore



説明

gitignore fileは、Gitが無視する必要のある意図的に追跡されていないファイルを指定します。 Gitによってすでに追跡されているファイルは影響を受けません。詳細については、以下の注を参照してください。

の各行gitignoreファイルはパターンを指定します。パスを無視するかどうかを決定するとき、Gitは通常チェックします複数のソースからのgitignoreパターン。優先順位は、最高から最低の順になります(1レベルの優先順位内で、最後に一致したパターンが結果を決定します)。



  • それらをサポートするコマンドのコマンドラインから読み取られるパターン。

  • から読み取ったパターンパスと同じディレクトリまたは任意の親ディレクトリにある.gitignoreファイル。上位レベルのファイル(作業ツリーの最上位まで)のパターンは、ファイルを含むディレクトリまでの下位レベルのファイルのパターンによって上書きされます。これらのパターンは、.gitignoreファイル。プロジェクトには通常、そのようなものが含まれますプロジェクトビルドの一部として生成されたファイルのパターンを含む、リポジトリ内の.gitignoreファイル。

  • から読み取ったパターン$ GIT_DIR / info / exclude。



  • 構成変数で指定されたファイルから読み取られたパターンcore.excludesFile。

パターンを配置するファイルは、パターンの使用方法によって異なります。

  • バージョン管理され、クローンを介して他のリポジトリに配布される必要があるパターン(つまり、すべての開発者が無視したいファイル)は、.gitignoreファイル。

  • 特定のリポジトリに固有であるが、他の関連するリポジトリと共有する必要のないパターン(たとえば、リポジトリ内に存在するが1人のユーザーのワークフローに固有の補助ファイル)は、$ GIT_DIR / info /除外ファイル。

  • ユーザーがすべての状況でGitに無視してもらいたいパターン(たとえば、ユーザーが選択したエディターによって生成されたバックアップファイルや一時ファイル)は、通常、によって指定されたファイルに入ります。ユーザーのcore.excludesFile〜/ .gitconfig。デフォルト値は$ XDG_CONFIG_HOME / git / ignoreです。 $ XDG_CONFIG_HOMEが設定されていないか空の場合、代わりに$ HOME / .config / git / ignoreが使用されます。

次のような基盤となるGit配管ツールgitls-ファイルとgit read-tree、readコマンドラインオプションで指定された、またはコマンドラインオプションで指定されたファイルからのgitignoreパターン。などの高レベルのGitツールgitステータスとgit add、上記で指定されたソースからのパターンを使用します。

パターンフォーマット

  • 空白行はファイルと一致しないため、読みやすさの区切りとして使用できます。

  • #で始まる行はコメントとして機能します。バックスラッシュを入れてください( ' ')ハッシュで始まるパターンの最初のハッシュの前。

  • 末尾のスペースは、円記号( ' ')。

  • オプションのプレフィックス '! 'これはパターンを否定します。以前のパターンで除外された一致するファイルは、再び含まれるようになります。そのファイルの親ディレクトリが除外されている場合、そのファイルを再度含めることはできません。 Gitはパフォーマンス上の理由から除外されたディレクトリを一覧表示しないため、含まれているファイルのパターンは、それらがどこで定義されていても効果がありません。バックスラッシュを入れてください( ' ')最初の'の前! 'リテラルで始まるパターンの場合 '!'、 例えば、 '!important!.txt '。

  • スラッシュ/はディレクトリ区切り文字として使用されます。セパレータは、最初、中間、または最後に発生する可能性があります.gitignore検索パターン。

  • パターンの最初または中央(または両方)にセパレータがある場合、そのパターンは特定のディレクトリレベルに関連しています。.gitignoreファイル自体。それ以外の場合、パターンは以下の任意のレベルでも一致する可能性があります.gitignoreレベル。

  • パターンの最後に区切り文字がある場合、パターンはディレクトリのみに一致します。それ以外の場合、パターンはファイルとディレクトリの両方に一致する可能性があります。

  • たとえば、パターンdoc / frotz /一致doc / frotzディレクトリですが、そうではありませんa / doc / frotzディレクトリ;しかしfrotz /一致フロッツとディレクトリであるa / frotz(すべてのパスは.gitignoreファイル)。

  • アスタリスク '* 'はスラッシュ以外のすべてに一致します。キャラクター '? ' '以外の任意の1文字に一致します/ '。範囲表記、例:[a-zA-Z]は、範囲内の文字の1つと一致させるために使用できます。詳細な説明については、fnmatch(3)およびFNM_PATHNAMEフラグを参照してください。

2つの連続したアスタリスク( '** ')フルパス名と一致するパターンでは、特別な意味を持つ場合があります。

  • 一流の '** 'の後にスラッシュが続く場合は、すべてのディレクトリで一致することを意味します。例えば、 '** / foo 'はファイルまたはディレクトリ'と一致しますfoo 'どこでも、パターン'と同じfoo '。 '** / foo / bar 'はファイルまたはディレクトリに一致します'バー 'ディレクトリの直下にある場所'foo '。

  • 末尾の '/ ** 'は内部のすべてに一致します。例えば、 'abc / ** 'はディレクトリ内のすべてのファイルに一致します'abc '、の場所を基準にして無限の深さの.gitignoreファイル。

  • スラッシュの後に2つの連続するアスタリスクが続く場合、スラッシュは0個以上のディレクトリに一致します。例えば、 'a / ** / b 'は'に一致しますa / b '、'a / x / b '、'a / x / y / b 'など。

  • 他の連続するアスタリスクは通常のアスタリスクと見なされ、以前のルールに従って一致します。

構成

オプションの構成変数core.excludesFileは、除外するファイル名のパターンを含むファイルへのパスを示します。$ GIT_DIR / info / exclude。除外ファイルのパターンは、のパターンに加えて使用されます$ GIT_DIR / info / exclude。

ノート

gitignoreファイルの目的は、Gitによって追跡されていない特定のファイルが追跡されないままになるようにすることです。

現在追跡されているファイルの追跡を停止するには、git rm--cached。

  • パターンhello。*は、名前がで始まるすべてのファイルまたはフォルダーに一致しますこんにちは。これをディレクトリのみに制限し、そのサブディレクトリには制限したくない場合は、パターンの前にスラッシュを付けることができます。/こんにちは。*;パターンが一致するようになりましたhello.txt、hello.cですが、そうではありませんa /hello.java。

  • パターンfoo /はディレクトリと一致しますfooとその下のパスですが、通常のファイルまたはシンボリックリンクとは一致しませんfoo(これは、Gitでpathspecが一般的にどのように機能するかと一致しています)

  • パターンdoc / frotzおよび/ doc / frotzはどの場合でも同じ効果があります.gitignoreファイル。つまり、パターンにすでにミドルスラッシュがある場合、先頭のスラッシュは関係ありません。

  • パターン「foo / *」は、「foo / test.json」(通常のファイル)、「foo / bar」(ディレクトリ)と一致しますが、「foo / bar / hello.c」(通常のファイル)とは一致しません。 )、パターンのアスタリスクがスラッシュのある「bar /hello.c」と一致しないため。

 $ git status [...] # Untracked files: [...] # Documentation/foo.html # Documentation/gitignore.html # file.o # lib.a # src/internal.o [...] $ cat .git/info/exclude # ignore objects and archives, anywhere in the tree. *.[oa] $ cat Documentation/.gitignore # ignore generated html files, *.html # except foo.html which is maintained by hand !foo.html $ git status [...] # Untracked files: [...] # Documentation/foo.html [...]

もう一つの例:

 $ cat .gitignore vmlinux* $ ls arch/foo/kernel/vm* arch/foo/kernel/vmlinux.lds.S $ echo '!/vmlinux*' >arch/foo/kernel/.gitignore

2番目の.gitignoreは、Gitが無視するのを防ぎますarch / foo / kernel /vmlinux.lds.S。

特定のディレクトリを除くすべてを除外する例foo / bar(/ *-スラッシュがないと、ワイルドカードは内のすべてを除外しますfoo / bar):

 $ cat .gitignore # exclude everything except directory foo/bar /* !/foo /foo/* !/foo/bar

も参照してください

git-rm [1]gitrepository-layout [5]git-check-ignore [1]