gitignoreファイルのフォーマットと書き方
gitignoreファイルのフォーマットと書き方です。gitignoreファイルのフォーマット
「gitignore」ファイルはテキストファイルです。テキストエディターで編集します。
空の行
空の行は読み飛ばされます。コメント行
「#」で始まる行は、コメント行です。コメント行も読み飛ばされるため、説明などを記述することができます。
スペースの削除とスペースの保持
条件の後ろにあるスペースの扱いについてです。後ろのスペースは削除される
各行に記述した条件は、ファイルの読み込み時に後ろのスペースが削除されて読み込まれます。例えばファイルに「readme.txt 」記述すると、「readme.txt」ファイルが「Git」の操作対象外になります。
この時、「readme.txt 」ファイルは操作対象外になりません。
後ろのスペースを保持する
デフォルトでは後ろのスペースが削除されますが、スペースを「\」(バックスラッシュ)で引用すると、後ろのスペースを削除せず保持できます。例えばファイルに「readme.txt\ 」記述すると、「readme.txt 」ファイルが「Git」の操作対象外になります。
この時、「readme.txt」ファイルは操作対象外になりません。
複数のスペースを記述する場合は、1スペースずつ「\」(バックスラッシュ)で引用します。
例えば「readme.txt\ \ 」のように記述します。
ファイルとフォルダーの区別
ファイルとフォルダーの区別についてです。デフォルトでは、記述した条件はファイルとフォルダーの区別なく、条件が適用されます。
条件にフォルダーを明示する
記述した条件をフォルダーにのみ適用したい時は、フォルダー名の後ろに「/」を記述します。例えば、「temp/」と記述すると、「temp」フォルダーが「Git」の操作対象外になります。
「temp」ファイルは、操作対象外になりません。
特定のフォルダーやファイルを指定する
特定のフォルダーやファイルを指定する方法です。特定のフォルダーやファイルを指定する
パスの記述を行うことで、特定のフォルダーや特定のファイルを、「Git」の操作対象外にすることができます。パスは自分のフォルダーからの相対パスで記述します。
また、条件の記述は「/」から記述します。
例えば「/readme.txt」と記述すると、自分のフォルダーにある「readme.txt」ファイルが「Git」の操作対象外になります。
この時、下位フォルダー内にある「readme.txt」ファイルは操作対象外になりません。
また、「/subfolder/readme.txt」のように、下位フォルダー内のファイルやフォルダーを条件に記述することもできます。
パスを指定した条件は、下位フォルダー以下に引き継がれません。
ワーキングディレクトリー外のgitignoreファイルについて
「ワーキングディレクトリー」外に配置する「gitignore」ファイルにパスの記述を行った場合、パスのルートはワーキングツリーのルートになります。例えば、「~/.config/git/ignore」ファイルに「/readme.txt」を記述した場合、「ワーキングツリー」のルートにある「readme.txt」ファイルが「Git」の操作対象外になります。
下位フォルダー内にある「readme.txt」ファイルは操作対象外になりません。
「ワーキングツリー」のルートに配置した「.gitignore」ファイルと同じパス基準になります。
パスの中間をまとめて条件に指定するには
パスの中間をまとめて条件にしてすることもできます。パスの中間は、「**」で記述します。
例えば「subfolder/**/temp/」と記述すると、以下のいずれのフォルダーも「Git」の操作対象外になります。
- subfolder/temp
- subfolder/subfolder/temp
- subfolder/subfolder/subfolder/temp
この条件は、下位フォルダー以下に引き継がれます。
フォルダー内のすべてのファイルやフォルダーを指定するには
フォルダー内のすべてのファイルやフォルダーを指定することもできます。例えば「/subfolder/**」と記述すると、自分のフォルダー内にある「subfolder」サブフォルダーが「Git」の操作対象外になります。
この条件は、下位フォルダー以下に引き継がれません。
下位フォルダー以下に引き継がない条件を下位フォルダー以下に引き継ぐには
下位フォルダー以下に引き継がない条件を、下位フォルダー以下に引き継ぐこともできます。下位フォルダー以下に引き継ぐには、条件の頭に「**」を記述します。
例えば「**/subfolder/」と記述すると、各フォルダー内にある「subfolder」サブフォルダーが「Git」の操作対象外になります。
例外の記述
例外は、「Git」の操作対象外の条件に合うファイルやフォルダーを、操作対象外の条件から外す記述のことです。例外を指定する
例外を指定するには、条件の頭に「!」を記述します。例えば、以下の記述があるとします。
*.txt
!readme.txt
!readme.txt
この条件では、1行目で拡張子「txt」を持つファイルがすべて「Git」の操作対象外になります。
しかし2行目の例外で「readme.txt」を指定しているので、「readme.txt」ファイルは「Git」の操作対象になります。
ファイルやフォルダーをまとめて指定する
ワイルドカードを利用して条件を記述すれば、複数のファイルやフォルダーをまとめて指定することができます。ワイルドカードは、globを利用します。
各ワイルドカードは、組み合わせて利用できます。
また、1つの条件で複数のワイルドカードを利用できます。
*ワイルドカード
どの文字列にも対応するワイルドカードです。文字数は何文字でも良いです。
0文字でも良いです。
記述例
「*.txt」と記述すれば、拡張子が「txt」のファイルを対象にできます。?ワイルドカード
どの文字列にも対応するワイルドカードです。ただし「*」ワイルドカードと異なり、文字数は1文字です。
記述例
「?-doc.txt」と記述すれば、ファイル名の1文字目に任意の1文字を持つ「-doc.txt」のファイルを対象にできます。[]ワイルドカード
[]内に記述された文字に対応するワイルドカードです。ただし「*」ワイルドカードと異なり、文字数は1文字です。
「?」ワイルドカードの条件を細かく指定するワイルドカードです。
記述例1
「[abc].txt」と記述すれば、以下のいずれかのファイルを対象にできます。- a.txt
- b.txt
- c.txt
記述例2
「-」で文字の範囲を指定できます。「[a-c].txt」と記述すれば、以下のいずれかのファイルを対象にできます。
- a.txt
- b.txt
- c.txt
[!]ワイルドカード
[]内に記述された文字に該当しない文字に対応するワイルドカードです。[]の意味を反転させたものです。
「*」ワイルドカードと異なり、文字数は1文字です。
「?」ワイルドカードの条件を細かく指定するワイルドカードです。