支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

Gitは、多くの開発現場でバージョン管理システムとして利用されている、とても便利なツールです。
本記事では、Gitを使用していくうえでも重要な「git ignore」について説明していきます。

git ignoreとは

Gitでファイルを管理していると、以下のファイルにつてGitで管理したくないということがあります。

・プロジェクト開発環境で自動生成される、作業証跡等のデータ
・コンパイルやビルド実行時に生成されるファイルや実行形式のファイル
・端末固有の設定情報や環境変数が記載されたファイル
・セキュリティ上、共有できないファイル。

このように、Gitで管理する必要のないファイルや、セキュリティ上共有するのはまずいファイルを指定し、Gitの管理下から外す機能のことを、「gitignore」といいます。

gitignoreの使い方

ここからは、「gitignore」の使い方について解説していきます。
「gitignore」は、「.gitignore」というファイルを作成し使用します。
※「.gitignore」は隠しファイルなので注意してください。
「.gitignore」に、対象のファイルを記載するだけで、Gitの管理下から外すことが可能です。

コミット前のgitignoreの設定

準備としてsampleディレクトリを作成します。


1.mkdir sample

次に、sampleディレクトリ内に、sample.txtと.gitignoreを作成します。

1.cd sample
2.
3.touch sample.txt
4.touch gitignore


ここで、lsコマンドをファイルを確認すると、sample.txtしか出力されません。
これは先に述べたように、「.gitignore」ファイルが隠しファイルであるためです。
そこで、隠しファイルも表示するオプションをつけ、以下のように入力すると、先に作成した2ファイルが表示されます。

ls -a


「.gitignore」をテキストエディタで開きsample.txtを入力後、保存して閉じ、add、commitすると、Gitには、sample.txtはGitでの管理対象から外されます。

コミット後のgitignoreの設定

.gitignoreに記載したものがGitに反映されない場合があります。これは、一度Gitに登録したものを後から、.gitignoreに追記したため、インデックスにキャッシュが残ったままとなっていたためです。
インデックスとはローカルリポジトリとリモートリポジトリの間にある中間領域のことです。
ここでは、sample.txtがすでにコミットされている場合を想定して.gitignoreに記載していく手順を記載していきます。
ざっくりと手順を説明すると以下のようになります。
1..gitignoreの編集
2.キャッシュの削除
3.commitの実行 gitignoreを編集するために、sampleディレクトリへ移動します。


1.cd sample

次にキャッシュを削除するため以下のコマンドを実行します。

1.git rm -r --cached sample.txt

上記コマンドの入力が完了したら、.gitignoreをcommitします。
commitが完了したら、Gitの管理対象からsample.txtが外されています。

gitignoreにおけるファイルの指定方法

特定のファイルの除外

除外対象のファイルが、.gitignoreが格納されているディレクトリ直下のファイルか、ディレクトリに関係なく記載された名前のファイルを対象にするかは、先頭に「/」をつけることで判断します。


#sample.txtを記載する場合

sample.txt : ディレクトリを問わず、sample.txtが除外対象

/sample.txt : gitignoreが格納されているディレクトリ直下のsample.txtが除外対象

特定のディレクトリの配下をすべて除外

特定のディレクトリは以下のファイルをすべて除外するには、末尾に「/」をつけることで判断します。
末尾につく「/」は、「ディレクトリとその配下を除外」という特別な意味を持つようになり、同じ名前のファイルが存在しても除外対象にはなりません。


#sampleディレクトリの配下すべてを除外する場合

sample/

ワイルドカード

gitignoreでは、ワイルドカードの「*」および、「?」、また、正規表現の「[]」を使用することが可能です。
「?」では「/以外の文字列」、「?」では、「/以外の一文字」を指定することができます。


#saで始まるファイルを除外する
sa*

#すべてのファイルを除外する
*

#sample1.txt~sample9.txtを除外する
sample[1 - 9].txt

#拡張子が「.txt」となっているものを除外する
*.txt

特定のファイルだけを除外しない

ワイルドカードの「*」と同時に、否定を表す「!」を先頭に着けることで、反対の意味を持つ「除外しない」を表すことができます。


#sample.txtのみ除外しない
*
!/sample.txt

#sampleディレクトリのみ除外しない
*
!/sample

ただし、一度記述した「ディレクトリの除外」を、追跡しなおす設定は認められません。

/sample/
!/sample.txt

コメントアウト

すでに例で使用していますが、コメントアウトは「#」を使って行います。


#コメントアウト

さいごに

多くのファイルを管理するGitにおいて、不必要なファイルを1つ1つ手で削除していては時間がかかってしまい非常に非効率です。
gitignoreを有効活用することで、業務をより効率的に行えるのではないでしょうか。