情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Gitのリポジトリからファイルを除外する

リポジトリのフォルダに新しいファイルが作成されたり、既存のファイルのデータが変更されたりした場合にはGitはそのことを認識し、git statusコマンドを実行するとそのようなファイルが全て表示されます。

しかしながら、ソフトウェアプロジェクトにおいてはログイン情報を格納するファイルや一時ファイルやログファイルなど、リポジトリのフォルダに含まれていてもリポジトリのファイルとしてリポジトリに含めたくないものが存在します。

そのようなファイルはリポジトリから除外することで、Gitがリポジトリのファイルとして取り扱わないようにすることができます(除外されたファイルはgit statusコマンドなどでも表示されなくなります。すなわち、そのようなファイルは存在しないものと見做されます)。

リポジトリからファイルを除外するにはリポジトリのフォルダに.gitignoreという名称のファイルを作成し、このファイルにリポジトリから除外するファイルのパターンを列挙します。パターンは複数指定することもでき、1行に1つずつ指定します(ただし、空行や#から始まる行は無視されます)。

パターンにおいては下のような表記を使用します。

  • *は0文字以上の全ての文字列にマッチします。
  • ?は全ての文字(1文字の文字列)にマッチします。
  • []で1文字以上の文字列を囲んだ場合には囲まれている何れかの文字にマッチします。ただし、2つの文字が-で繋がれている場合には(文字コード上)左の文字から右の文字までの範囲の文字にマッチします。なお、囲まれている文字列に*?が含まれている場合にはそれらはその文字自体を表します。
  • [!]で1文字以上の文字列を囲んだ場合には囲まれている何れかの文字以外にマッチします。ただし、2つの文字が-で繋がれている場合には(文字コード上)左の文字から右の文字までの範囲の文字以外にマッチします。なお、囲まれている文字列に*?が含まれている場合にはそれらはその文字自体を表します。
  • *?[の文字自体を表したい場合には代わりに\*\?\[を使用します。
  • パターンの冒頭に/を付加した場合には子フォルダのファイルはパターンを満たしても除外されません。
  • パターンの末尾に/を付加した場合にはパターンを満たすフォルダの全てのファイルが除外されます。
  • パターンの末尾に!を付加した場合にはパターンを満たさないファイルが除外されます。

なお、.gitignoreファイルに列挙されたパターンにマッチするファイルであっても、.gitignoreファイルが作成される前にコミットされているファイルはリポジトリから除外されることはありませんので注意してください。

そのため、.gitignoreファイルはリポジトリの最初のコミットを行う前に作成しておくべきです。

また、.gitignoreファイル自体は特別な役割を担うファイルであるためリポジトリのファイルにはなりません。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Git