🗂

Gitで不要なファイルを除外する:.gitignoreの完全ガイド

2025/03/06に公開

はじめに

Gitリポジトリを効率的に管理するためには、ソースコードに関連する重要なファイルのみをバージョン管理下に置き、一時ファイルやビルド成果物などの不要なファイルを除外することが重要です。この記事では、.gitignoreファイルの作成と活用方法について詳しく解説します。

.gitignoreとは

.gitignoreファイルは、Gitがトラッキングしないファイルやディレクトリを指定するための設定ファイルです。これにより、以下のようなファイルをリポジトリから除外できます

  • ビルド成果物(コンパイル済みファイル)
  • 依存関係のディレクトリ(node_modules, vendorなど)
  • ログファイル
  • 一時ファイル
  • 環境設定ファイル(.env)
  • IDEの設定ファイル

.gitignoreファイルの作成方法

1. 基本的な作成方法

プロジェクトのルートディレクトリに.gitignoreファイルを作成します

touch .gitignore

テキストエディタで開き、除外したいファイルやディレクトリのパターンを記述します。

2. テンプレートの活用

GitHub提供のgitignoreテンプレートを活用すると便利です。言語やフレームワークごとに最適化されたテンプレートが用意されています。

3. gitignore.ioの利用

gitignore.ioでは、プロジェクトで使用する技術スタックを選択するだけで、最適な.gitignoreファイルを生成できます。

例えばこちらの画像のように自分が使用している言語を入力します。↓

そうすると、その言語に合わせて.gitignoreのサンプルが得られます↓

.gitignoreの記述ルール

基本的なパターン

# コメント行
file.txt       # 特定のファイルを除外
*.log          # 拡張子による除外
build/         # ディレクトリ全体を除外

高度なパターン

# ルートディレクトリの特定ファイルのみ除外
/config.json

# 特定のディレクトリ内のファイルを除外
logs/*.log

# 再帰的にすべてのディレクトリから特定のファイルを除外
**/*.tmp

# 除外パターンの否定(!で始める)
*.log
!important.log  # important.logだけは除外しない

複数の.gitignoreファイル

プロジェクト内の異なるディレクトリに個別の.gitignoreファイルを配置することも可能です

project/
  .gitignore        # プロジェクト全体の設定
  frontend/
    .gitignore      # フロントエンド固有の設定
  backend/
    .gitignore      # バックエンド固有の設定

グローバル.gitignoreの設定

すべてのGitリポジトリで共通して除外したいファイル(OSやIDEが生成する一時ファイルなど)は、グローバル.gitignoreを設定すると便利です

git config --global core.excludesfile ~/.gitignore_global

その後、~/.gitignore_globalファイルに除外パターンを追加します:

# OS関連
.DS_Store
Thumbs.db

# エディタ関連
.vscode/
.idea/
*.swp

すでに追跡されているファイルを除外する

.gitignoreに追加しても、すでにGitで追跡されているファイルは引き続き追跡されます。追跡を停止するには

# ファイルをインデックスから削除するが、ローカルには保持
git rm --cached <ファイル名>

# ディレクトリの場合
git rm --cached -r <ディレクトリ名>

言語・フレームワーク別の.gitignore例

Python

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
venv/

Node.js

# Node.js
node_modules/
npm-debug.log
yarn-debug.log
yarn-error.log
.pnpm-debug.log
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

Java

# Java
*.class
*.log
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.mtj.tmp/
target/

トラブルシューティング

.gitignoreが効かない場合

キャッシュが原因で.gitignoreが効かない場合は、キャッシュをクリアします

git rm -r --cached .
git add .
git commit -m "gitignoreの更新とキャッシュのクリア"

特定のファイルだけ一時的に無視したい

特定のファイルを一時的に無視したい場合は、.git/info/excludeファイルを使用します。このファイルはリポジトリにコミットされません。

まとめ

.gitignoreファイルを適切に設定することで、Gitリポジトリを整理し、不要なファイルによるノイズを減らすことができます。プロジェクトの初期段階で.gitignoreを設定し、必要に応じて更新することをお勧めします。

効果的な.gitignoreファイルは、チーム全体の開発効率を向上させ、リポジトリのサイズを最適に保つための重要なツールです。

Discussion