Git Ignoreと.gitignore
Git Ignore
コードを他の人と共有する場合、共有したくないファイルやプロジェクトの一部が存在することがよくあります。
例
- logファイル
- temporary(一時)ファイル
- hidden(隠し)ファイル
- personal(個人)ファイル
- etc..
Gitでは、.gitignore
ファイルを使用して、プロジェクトのどのファイルまたは部分をGitが無視するかを指定できます。
Gitは、.gitignore
で指定されたファイルとフォルダーを追跡しません。ただし、.gitignore
ファイル自体はGitによって追跡されます。
.gitignoreを作成する
.gitignoreファイルを作成するには、ローカルのGitのルートに移動して作成します。
例
touch .gitignore
2つの簡単なルールを追加するだけです。
.log
拡張子を持つファイルを無視します。
temp
という名前のディレクトリにあるものはすべて無視します。
例
\# ignore ALL .log files *.log
# ignore ALL files in ANY directory named temp temp/
.log
ファイルとtemp
フォルダー内のすべてがGitによって無視されます。
注:この場合、リポジトリ全体に適用される1つの
.gitignore
を使用します。
サブディレクトリに追加の.gitignore
ファイルを置くこともできます。これらは、そのディレクトリ内のファイルやフォルダにのみ適用されます。
.gitignoreのルール
.gitignore
ファイル内のパターンを一致させるための一般的なルールは次のとおりです。
パターン | 解説・マッチ | 例 |
---|---|---|
空白行は無視されます | ||
#text comment | #で始まる行は無視されます | |
name | すべてのnameファイル、nameフォルダ、任意のnameフォルダ内のファイルとフォルダ |
/name.log /name/file.txt /lib/name.log |
name/ | 末尾の/は、パターンがフォルダのものであることを指定します。任意のnameフォルダー内のすべてのファイルとフォルダにマッチします。 | /name/file.txt
/name/log/name.log
一致しないパターン: |
name.file | name.fileを含むすべてのファイル | /name.file /lib/name.file |
/name.file | /で始まるパターンは、ルート・フォルダー内のファイルのみにマッチします。 | /name.file 一致しないパターン: /lib/name.file |
lib/name*.*file | 特定のフォルダにあるファイルを指定するパターンは、常にルート(/で始まらなくても)に対して適用されます。 | /lib/name.file 一致しないパターン: name.file /test/lib/name.file |
**/lib/name.file | /の前に**で始まる場合は、リポジトリ内の任意のフォルダとマッチすることを指定します。 ルート上だけではありません。 | /lib/name.file /test/lib/name.file |
**/name | すべてのnameフォルダ、および任意のnameフォルダ内のファイルとフォルダ | /name/log.file /lib/name/log.file /name/lib/log.file |
/lib/**/name | すべてのnameフォルダ、およびlibフォルダ内の任意のnameフォルダ内のファイルとフォルダ。 | /lib/name/log.file /lib/test/name/log.file /lib/test/ver1/name/log.file 一致しないパターン: /name/log.file |
.file | .file拡張子を持つすべてのファイル | /name.file /lib/name.file |
*name/ | nameで終わるすべてのフォルダー | /name/log.file /name/log.file |
name?.file | ?は非特定の文字1文字にマッチします。 | /names.file /name1.file 一致しないパターン: /names1.file |
name[a-z].file | [range]は、指定された範囲内の1文字に一致します。(この場合はa~zの範囲の文字、または数字。) | /names.file /nameb.file 一致しないパターン: /name1.file |
name[ABC].name | [set]は、指定された文字セット(この場合はa、b、cのいずれか)の中の1文字にマッチします。 | /namea.file /nameb.file 一致しないパターン: /names.file |
*name*[!abc].file | [!set]は、文字の集合で指定されたもの(この場合はa、b、c)以外の1文字にマッチします | /names.file /namex.file 一致しないパターン: /namesb.file |
*.file | .file拡張子を持つすべてのファイル | /name.file /lib/name.file |
name/ ! | !は否定または例外を指定する。name/secret.logを除く、任意の名前フォルダー内のすべてのファイルとフォルダーにマッチします。 | /name/file.txt /name/log/nname.log 一致しないパターン: /name/secret.log |
.file!name.file | !は否定または例外を指定する。 | /log.file /name.file 一致しないパターン: /name.file |
*.file !name/*.file* junnk.* | 否定の後に新しいパターンを追加すると、以前に否定されたファイルが再度無視されます .file拡張子を持つすべてのファイル(nameフォルダ内のものを除く)。ファイル名がジャンクでない限り | /log.file /name/log.file 一致しないパターン: /name/junk.file |
ローカルおよび個人のGit Ignorルール
ファイルやフォルダを無視することもできますが、配布されている.gitignore
ファイルには表示されません。
この種の無視は.git/info/exclude
ファイルで指定します。.gitignore
と同じように動作しますが、他の人には表示されません。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。