.gitignore生成ガイド:プロジェクトタイプ別に無視ルールを素早く作成
.gitignoreとは
.gitignore ファイルは、Gitにどのファイル/ディレクトリをバージョン管理から除外するかを指示します:
node_modules/ ← ディレクトリ全体を無視
*.log ← すべてのログファイルを無視
.env ← 環境変数ファイルを無視
dist/ ← ビルド成果物を無視
未追跡のファイルが .gitignore ルールにマッチすると、Gitは自動的にスキップします。既に追跡されているファイルには影響しません。
構文ルールの詳細
基本パターン
| 構文 | 意味 | 例 |
|---|---|---|
*.ext |
すべての .ext ファイルにマッチ | *.log |
dir/ |
ディレクトリ全体にマッチ | node_modules/ |
file |
特定のファイルにマッチ | .env |
** |
任意のディレクトリ階層にマッチ | **/test |
? |
1文字にマッチ | config?.json |
[abc] |
括弧内の任意の1文字にマッチ | file[123].txt |
否定パターン !
*.log ← すべてのログを無視
!important.log ← ただし important.log は保持
否定パターンは、対応する無視ルールの後に配置する必要があります。
パスルール
/README.md ← ルートディレクトリの README.md のみ無視
README.md ← すべてのパスの README.md を無視
docs/*.pdf ← docs/ 下のPDFを無視(非再帰)
docs/**/*.pdf ← docs/ の全サブディレクトリ下のPDFを無視
よく使うプロジェクトテンプレート
Node.js
node_modules/
dist/
build/
.next/
.env
.env.local
*.log
coverage/
Python
__pycache__/
*.py[cod]
*.egg-info/
dist/
.venv/
venv/
.env
.pytest_cache/
.mypy_cache/
Java / Spring Boot
target/
*.class
*.jar
*.war
.gradle/
.idea/
*.iml
application-local.yml
IDE / エディタ
# VS Code
.vscode/
# IntelliJ IDEA
.idea/
*.iml
# macOS
.DS_Store
# Windows
Thumbs.db
gitignoreツールの使い方
ステップ1:ツールを開く
gitignoreツール にアクセスし、生成画面に入ります。
ステップ2:プロジェクトタイプを選択
プロジェクトで使用している技術スタックにチェック:
- ☑ Node.js
- ☑ Python
- ☑ Java
- ☑ Vue / React / Angular
ステップ3:IDEを選択
チームで使用しているエディタにチェック:
- ☑ VS Code
- ☑ IntelliJ IDEA
- ☑ その他
ステップ4:生成してダウンロード
「生成」をクリック。ツールがすべてのテンプレートを自動マージし、重複ルールを削除して、完全な .gitignore ファイルを生成します。
ステップ5:プロジェクトルートに配置
ダウンロードしたファイルをGitリポジトリのルートに配置します。ファイル名が .gitignore であることを確認(先頭のドットに注意)。
グローバルgitignore
プロジェクトレベルの .gitignore に加えて、グローバルな無視ルール(全リポジトリに適用)を設定できます:
# グローバルgitignoreファイルを設定
git config --global core.excludesFile ~/.gitignore_global
# グローバルルールを編集
vim ~/.gitignore_global
推奨されるグローバル無視内容:
# OSファイル
.DS_Store
Thumbs.db
# IDE設定
.idea/
.vscode/
# 個人ツール
.todo
グローバルルールは個人環境に関連するファイルに適し、プロジェクトレベルルールはプロジェクト固有のファイルに適しています。
既に追跡されているファイルの処理
.gitignore は未追跡のファイルにのみ効果があります。ファイルが既にGitで追跡されている場合:
# 追跡を解除するがローカルファイルは保持
git rm --cached .env
# ディレクトリ全体の追跡を解除
git rm -r --cached node_modules/
# 追跡解除の変更をコミット
git commit -m "chore: update gitignore and untrack files"
--cachedオプションにより、Gitインデックスからのみ削除し、ローカルファイルは削除しません。
よくある間違い
| 間違い | 原因 | 解決策 |
|---|---|---|
| ルールが効かない | ファイルが既に追跡されている | 先に git rm --cached を実行 |
| 否定が効かない | ! が無視ルールの前にある |
! ルールを対応する無視ルールの後に配置 |
| 必要なファイルまで無視 | パターンが広すぎる | / でパス範囲を限定 |
| .envの無視を忘れた | 環境変数テンプレートが未含入 | 常に .env を .gitignore に追加 |
| チームルールが不統一 | 統一テンプレートがない | ツールで標準テンプレートを生成 |
.gitignoreと.gitkeep
ディレクトリを無視すると、Gitは空ディレクトリを追跡しません。空ディレクトリ構造を保持するには:
logs/ ← .gitignore でログを無視
logs/.gitkeep ← .gitkeep でプレースホルダー、ディレクトリを保持
.gitkeepはGitの機能ではなく、コミュニティの慣例です。空ディレクトリに.gitkeepファイルを配置します。
まとめ
.gitignore はプロジェクト設定の基盤です。正しい無視ルールにより、機密情報や冗長なファイルのコミットを防げます。構文ルール、よく使うテンプレート、グローバル設定をマスターし、gitignoreツール で素早く生成することが、効率的なバージョン管理の第一歩です。