TECH I.S.

Git Ignoreと.gitignore


プラットフォームを変更します:

Shift focus to GitHubGitHubShift focus to BitbucketBitbucketShift focus to GitLabGitLab

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.log

name.filename.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/secret.logを除く、任意の名前フォルダー内のすべてのファイルとフォルダーにマッチします。/name/file.txt
/name/log/nname.log

一致しないパターン:
/name/secret.log
.file!name.file!は否定または例外を指定する。.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と同じように動作しますが、他の人には表示されません。


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細