
スポンサーリンク
Gitでバージョン管理を行う際に欠かせないのが.gitignore
ファイルです。このファイルは、プロジェクトに不要なファイルや、管理対象に含めるべきでないファイルをGitの追跡対象から除外する役割を持っています。
本記事では「gitignore 書き方」をキーワードに、基本的な構文から、実践的な使い方、応用的な活用法まで、具体例を交えながら詳しく解説していきます。この記事を読むことで、あなたのプロジェクトがよりクリーンで管理しやすくなり、チーム開発でも安心してファイル共有ができるようになります。
.gitignoreとは
🎯 目的
Gitに「無視するファイル」を明示的に指定するためのファイル
🧹 効果
不要なファイルをリポジトリから除外してクリーンに保つ
👥 メリット
チーム開発でのトラブル回避・セキュリティ向上
.gitignore
はGitに「無視するファイルやディレクトリを明示的に指定する」ためのファイルです。この設定をすることで、不要なファイルがリポジトリに含まれることを防ぐことができ、コミット履歴やリポジトリ構造をきれいに保つことができます。通常、以下のようなファイルを無視対象に指定します。
- コンパイルやビルド時に生成されるファイル
- IDEやエディタが生成する設定ファイル、キャッシュファイル
- 実行時に生成されるログファイル
- 中間生成物や一時ファイル
- 環境変数ファイルなど、個人情報・機密情報を含むファイル
- OSやツールが自動で作成する隠しファイル
これらを無視することで、不要な差分の発生を防ぎ、共同開発時のトラブルを回避することができます。
.gitignoreが必要な理由
開発中には、次のような「バージョン管理に含めるべきではないファイル」が自動的に作成されます。
- 一時ファイル
- ビルド生成物
- ログファイル
- 設定ファイル(例:APIキーを含む
.env
) - OS依存ファイル(例:
.DS_Store
、Thumbs.db
)
こういったファイルを.gitignore
で除外することで、次のようなメリットがあります。
-
リポジトリの肥大化を防ぐ 不要なファイルを除外することで、リポジトリのサイズが膨らまず、クローンやフェッチが高速になります。
-
コミットログが見やすくなる 不要な変更が履歴に残らないため、必要な変更だけを簡単に確認できます。
-
チーム開発がスムーズになる 他の開発者との間で、不要な差分やコンフリクトが発生しにくくなります。
-
セキュリティ向上 機密情報の漏えいを防ぎ、意図せずAPIキーなどを公開してしまうリスクを減らせます。
.gitignoreの基本ルールと設定方法
.gitignoreの作成場所と影響範囲
.gitignore
は、無視したいファイルが存在するフォルダに作成します。- 有効範囲は、そのファイルが置かれたディレクトリ配下全体です。
- リポジトリ内には複数の
.gitignore
を置くことができます。
.gitignoreのパスの指定方法
- 記述するパスは、その
.gitignore
が存在するフォルダからの相対パスになります。 - 絶対パスの指定はできません。
.gitignore作成時の注意点
-
Windowsのメモ帳では拡張子のみのファイル(
.gitignore
)を作れない場合があります。 -
その場合は、以下のように作成してください。
-
コマンドで作成:
- macOS/Linux:
touch .gitignore
- Windows:
type nul > .gitignore
- macOS/Linux:
-
他のエディタ(Visual Studio Code など)を使う。
-
.gitignoreの基本構文
.gitignore
では「グロブパターン」という記法でファイルを指定します。
記法 | 意味 | 例 |
---|---|---|
# | コメント行。Gitは無視する。 | # これはコメントです |
空行 | 無視。 | |
* | 任意の文字列にマッチ。 | *.log → 全てのログファイル |
/ | ルートまたは現在のディレクトリからのパス。 | /debug.log → ルート限定 |
bin/ | 特定ディレクトリとその中身を無視。 | |
? | 任意の1文字にマッチ。 | file?.txt → file1.txt |
[abc] | 指定した文字のいずれかにマッチ。 | file[12].txt → file1.txt , file2.txt |
[!abc] | 指定した文字以外にマッチ。 | |
** | 0個以上のディレクトリを含むパスにマッチ。 | **/logs → どこにあるlogsも対象 |
! | 否定パターン。無視ルールの例外を指定。 | !important.txt → 無視しない |
.gitignore
は非常にシンプルで、1行ずつパターンを記述するだけで適用されます。特別なプログラミング知識は不要で、基本的なルールさえ覚えれば誰でも簡単に使いこなすことができます。
.gitignoreファイルの一般的な記述例
# 特定のディレクトリを無視node_modules/
# 拡張子が.logのファイルを無視*.log
# ビルドディレクトリを無視build/dist/
# 環境変数ファイルを無視secret.env
例:否定パターン
# すべてのlogファイルを無視するが、important.logは除外*.log!important.log
複数の.gitignore
と優先順位
複数の.gitignore
ファイルが存在する場合、より深い階層のものが優先されます。
Gitは以下の順で無視設定を判定します。(優先度の高い順)
-
- コマンドライン指定(例:
git add -f <ファイル>
)
→-fオプションでGitが通常無視するファイルを、強制的にステージングエリアに追加する
- コマンドライン指定(例:
-
- 各フォルダの
.gitignore
- 各フォルダの
-
$GIT_DIR/info/exclude
(リポジトリ専用の除外ファイル)
-
- グローバル除外ファイル(例:
~/.gitignore_global
)
- グローバル除外ファイル(例:
※グローバル無視ファイルは、次のコマンドで設定できます。
git config --global core.excludesFile ~/.gitignore_global
.gitignore実践で役立つ便利な知識
🔍 無視ルールの確認
どのパターンで無視されているかを確認
📁 空ディレクトリ管理
空のディレクトリ構造を保持
⚙️ グローバル設定
OS依存ファイルをグローバルで無視
-
空のディレクトリ管理(
.gitkeep
) Gitは空のディレクトリを管理できないため、空ディレクトリを保持したい場合は.gitkeep
ファイル(中身は空)を配置します。 -
ディレクトリ構造だけ管理する書き方
/storage/**!/storage/**/!/storage/**/.gitkeep
この記述で、ディレクトリ構造と.gitkeep
のみが管理対象になります。
- 無視ルールの確認方法
git check-ignore -v <ファイル名>
特定のファイルが無視される原因となっているパターンと、そのパターンが記述されているファイルおよび行番号を特定できます。
- 無視対象ファイルの強制コミット
git add -f <ファイル名>
※できれば否定パターンを使って明示的に管理した方が安全です。
GitHubの公開テンプレートを活用しよう
🐙 GitHub公式テンプレートを活用しよう!
GitHub公式のgitignoreテンプレート集を活用することで、
業界標準の.gitignoreを簡単に作成できます
プロジェクトに合う
テンプレートを探す
ファイルを取得して
.gitignoreに追加
プロジェクト固有の
設定を追記
GitHubは公式に「gitignore テンプレート集」を公開しており、Node.js、Python、Java、C++、Unityなど、多種多様な開発環境に対応したサンプルファイルが多数用意されています。これらのテンプレートは業界標準とも言える内容が反映されており、ほとんどの場合、これを元にプロジェクトに合うように微調整すれば十分です。わざわざ一から作成する必要はなく、GitHubのテンプレートを活用することで、迅速に最適な.gitignoreを準備することができます。
テンプレートの具体的な活用法
- GitHubのテンプレートからプロジェクトに合うものを検索
- ファイルをダウンロードして.gitignoreとしてリポジトリに追加
- プロジェクト固有のビルドフォルダや秘密ファイルを追記
これだけで簡単に実用的な.gitignoreが作成できます。
よく使う.gitignoreテンプレート
Node.jsプロジェクト
Node.jsでは大量の依存ライブラリがnode_modules
に保存されるため、これを必ず無視します。
node_modules/.envnpm-debug.logpackage-lock.json
Pythonプロジェクト
Pythonではキャッシュファイルや仮想環境ディレクトリを無視するのが基本です。
__pycache__/*.pyc.envvenv/debug.log
Javaプロジェクト
Javaはコンパイルで中間生成物が多く発生するため、ビルド成果物を除外する必要があります。
*.class*.jar*.war*.eartarget/build/
IDE別設定ファイル
IDEが自動生成する設定ファイルやワークスペースデータはプロジェクトごとに異なるため、適切に無視しましょう。
VSCode
.vscode/*.code-workspace
IntelliJ IDEA
.idea/*.imlout/
.gitignoreのよくあるミスと注意点
🔍 すでに追跡されているファイル
すでにGitが管理しているファイルは.gitignoreを追加しても無視されません
📁 ディレクトリの部分復帰
ディレクトリ全体を無視した場合、その中の一部ファイルだけを含めることは基本できません
🌍 OS依存ファイル
.DS_Store、Thumbs.dbなどはプロジェクトではなくグローバル設定で無視する
- すでにGitの管理下に入っているファイルは、.gitignoreを追加しても無視されません。対象ファイルを一度
git rm --cached
でインデックスから削除する必要があります。 - パターンの書き方を間違えると、意図しないファイルが追跡対象になってしまう場合があります。
- .gitignoreはリポジトリのルートディレクトリに設置するのが基本ですが、サブディレクトリに個別で設置することも可能です。
すでに追跡されているファイルは無視できない
.gitignore
は未追跡のファイルにのみ有効です。
すでにGitが管理しているファイルは、.gitignore
を追加しても無視されません。その場合、以下のコマンドを実行してインデックスからファイルを削除しましょう。
git rm --cached <ファイル名>
※--cached
を付けないとローカルのファイルも削除されるので注意。
除外したディレクトリは部分的に復帰できない
ディレクトリ全体を無視した場合、その中の一部のファイルだけを含めることは基本できません。
NG例:
/hoge/!/hoge/fuga.txt
この場合、fuga.txt
は追跡されません。
正しい書き方:
/hoge/*!/hoge/fuga.txt
OS依存ファイルはグローバルで無視する
OSが自動で作成するファイル(例:.DS_Store
、Thumbs.db
)は、プロジェクトの.gitignore
ではなく、グローバル除外ファイル(例: ~/.gitignore_global) に記載するのが推奨されます。
シンボリックリンクの扱い
.gitignore
は、リンク先ファイルのパスに対して適用されます。
シンボリックリンク自体は無視対象にはなりません。
反映されない場合の対処方法
.gitignore
を正しく記述したにも関わらず、意図したファイルが無視されない場合は、以下の手順を試してみましょう。
その後、再度コミットすることで、無視設定が適用されます。
パターンの書き方を確認する
意図した書き方になっているか再確認しましょう。特に以下をチェックします。
- スペルミスがないか
- 相対パスと絶対パスの指定が正しいか
- サブディレクトリを意識したパターンになっているか
- 否定パターン(
!
)を誤って適用していないか
サブディレクトリの.gitignoreを確認する
場合によっては、上位の.gitignore
と下位の.gitignore
が競合していることがあります。ルールの適用順を確認し、意図しない上書きが発生していないか確認してください。
コマンドで確認する
Gitが現在どのファイルを追跡しているかは、次のコマンドで確認できます。
git status
無視されていないファイルが表示されている場合は、.gitignore
の設定ミスか、キャッシュが残っていることが原因です。
.gitignoreまとめ
GitHubの公式テンプレートを積極的に使用する
ファイル単位ではなくパターンで管理する
意図を明示するためのコメントを追加
変更後は必ずgit statusで確認
チーム全体でルールを統一する
プロジェクトとグローバルで管理対象を分ける
- 言語別の
.gitignore
テンプレート(GitHubなどで公開)を積極的に活用する。 - ファイル単位ではなく、パターンで管理するのが理想。
- コメントを適宜記入し、意図を明示する。
.gitignore
の変更後は必ずgit status
で動作確認をする。- チーム全体で
.gitignore
ルールを統一することが重要。 - プロジェクトとグローバルで管理する対象をきちんと分ける。
.gitignore
を正しく書くことは、Gitリポジトリを清潔に保ち、無駄なファイルを排除し、チーム全体の作業効率を大幅に向上させるための重要なスキルです。プロジェクトの種類や開発環境に応じて適切に設定することで、不要なトラブルやファイル管理の手間を最小限に抑えることができます。
GitHubのテンプレートを積極的に活用し、自分に合った最適な.gitignoreを作成して、よりスマートな開発を実現しましょう。
Gitユーザにお勧めの本
![]() |
いちばんやさしい
新品価格
|

![]() |
新品価格
|

![]() |
新品価格
|

以上で本記事の解説を終わります。
よいITライフを!