特定のファイルを Git の管理下から除外する (.gitignore)
Git が得意ではないファイル
Git でファイルのバージョンを管理する中で「Git が得意でないファイル」を知っておくことも重要です。
(1) の例:ツールで自動生成できるファイル (HTMLビルダー, ORマッパーなど)
(2) の例:通常のソースコード、テキストファイル ( .txt
, .md
, .py
, .cpp
など)
(3) の例:コンパイル時なのに生成されるファイルや実行形式ファイル ( .o
, .exe
, .out
など)
(4) の例:画像やワードファイルなどの1回管理してもなかなか変わらないバイナリファイル ( .png
, .jpg
, .gif
, .pdf
, .docs
など)
また、個人の環境によって変化するファイルも Git の管理下から除外するべきでしょう。エディタの設定ファイルや環境変数ファイルがこれに該当します。さらにパスワード等の機密情報が書かれたファイルも必ず除外するべきです。APIのクレデンシャルファイルを間違えてGit管理してしまい、漏洩したケースも多く見られます。
Git が得意ではないファイルは管理から除外する
ファイルの除外設定は .gitignore
ファイルを記述することで設定します。
.gitignore
を保存する場所は Git 管理下にあるディレクトリ です。しかし保存したディレクトリ以下に除外設定を行うため、 .gitignore
より上層のディレクトリは除外対象に入りません。基本的には .git
ディレクトリと同じ階層に保存すると良いでしょう。
複数の .gitignore
が複数の階層にある場合、階層が深いファイルの設定が優先されます。
複数の.gitignore git-sample
├ .git
├ .gitignore
├ child
│ ├ .gitignore
│ └ child.txt <- git-sample/child/.gitignore の設定が優先される
├ tracked.txt <- git-sample/.gitignore の設定のみ適用される
└ untracked.txt <- git-sample/.gitignore の設定のみ適用される
.gitignore を記述する
パターンマッチングによって記述します。本記事ではいくつかの例を挙げることに留めます。
${ファイル名}
:ファイル名を除外します。しかしサブディレクトリにも同名のファイルがあった場合も除外されます。
*.out
:このパターンは拡張子に .out
を持つファイルを除外します。 sample.out
, child/sample2.out
, child/child/sample3.out
などがマッチングします。
**/*.exe
:あるディレクトリ以下に存在する .exe
ファイルを除外します。 child/sample2.out
, child/child/sample3.out
などがマッチングしますが、 sample.out
はマッチングしません。
/*.exe
: .gitignore
と同階層に存在する .exe
ファイルを除外します。 sample.out
がマッチングしますが、 child/sample2.out
, child/child/sample3.out
などはマッチングしません。
${ディレクトリ名}/
:指定されたディレクトリ以下を除外します。サブディレクトリにも同名のディレクトリがあった場合も除外されます。 child/
と記述した場合、 child/
や x/sample/
がマッチングします。
/${ディレクトリ名}/
: .gitignore
と同階層に存在するディレクトリ以下を除外します。 child/
と記述した場合、 child/
がマッチングしますが、 x/sample/
はマッチングしません。
!${パターン}
:例外的に除外の対象から除外されます。つまり管理対象になります。 *.png
と !sample.png
を記述した場合、 test.png
, child/test.png
などは除外されますが、 sample.png
, child/sample.png
は管理対象になります。
しかしながら
.gitignore
ファイルの記述というものは大体テンプレートがあるものです。
gitignore.io は言語やフレームワーク、IDEを指定するとテンプレートを自動で作成してくれるサービスです。作成結果を
.gitignore
にコマンドで反映することもできます。gitignore.io で作成したあとに設定をカスタマイズすると良いでしょう。
gitignore.io を利用する
1. 検索欄で必要な言語やフレームワーク、IDEを指定して Create する。
2. 結果が表示される。これをコピペしても良いが、もっとスマートにするためにURLをコピーする。
3. 以下のコマンドを .gitignore
を作りたいディレクトリで実行する。