Gitを使っていると、「あるファイルをコミットしたくない」「ログや一時ファイルが毎回表示されてうんざり…」と感じたことはありませんか?
そんなときに大活躍するのが、.gitignore
ファイルです。
このファイルを使えば、Gitが無視すべきファイルやフォルダを指定でき、管理がぐっと楽になります。
この記事では、.gitignore
の基本から、実践的な設定例、よくあるミスまでをわかりやすく解説します。
.gitignoreとは?

.gitignoreの役割
.gitignore
は、Gitが追跡(トラッキング)しないファイルやディレクトリを指定するファイルです。
プロジェクトのルートディレクトリに配置し、以下のように使います。
# .gitignore の例
*.log
__pycache__/
.env
この例では、すべての.log
ファイル、__pycache__
ディレクトリ、.env
ファイルが無視されます。
なぜ.gitignoreが必要?
問題となるファイルの例:
- ログファイル:
app.log
、error.log
など - 一時ファイル:
~$document.docx
、.DS_Store
など - 設定ファイル:
.env
、config.ini
など - コンパイル済みファイル:
*.pyc
、*.class
など
これらをGitで管理すると:
- リポジトリが汚れる:不要なファイルが混在
- チーム開発で問題:環境固有のファイルが共有される
- セキュリティリスク:パスワードなど機密情報が漏れる
.gitignoreを使う前と後の比較
使う前:
git status
# 表示例
modified: main.py
untracked: app.log
untracked: __pycache__/
untracked: .env
untracked: temp/
使った後:
git status
# 表示例
modified: main.py
スッキリして、本当に必要な変更だけが見えるようになります!
この章のまとめ
.gitignore
を使うと、不要なファイルがリポジトリに追加されるのを防げます。次は、その具体的な書き方を紹介します。
書き方のルールとパターン
基本的なルール
.gitignoreの記述方法:
パターン | 意味 | 例 |
---|---|---|
# | コメント行 | # これはコメントです |
ファイル名 | 特定のファイルを無視 | config.ini |
*.拡張子 | 拡張子で無視 | *.log |
フォルダ名/ | フォルダを無視 | temp/ |
/フォルダ名/ | ルート直下のフォルダのみ | /build/ |
!ファイル名 | 例外(無視しない) | !important.log |
実践的な例
# コメント:Python用の.gitignore
# コンパイル済みファイル
__pycache__/
*.pyc
*.pyo
*.pyd
# 環境ファイル(パスワードなど)
.env
.env.local
# ログファイル
*.log
logs/
# IDEの設定ファイル
.vscode/
.idea/
# OSが作る隠しファイル
.DS_Store
Thumbs.db
# 一時ファイル
*.tmp
*.bak
~*
パターンの詳細解説
1. ワイルドカード(*)の使い方
# すべての.txtファイルを無視
*.txt
# nameで始まるすべてのファイルを無視
name*
# testで終わるすべてのファイルを無視
*test
# 任意の1文字にマッチ(?)
temp?.txt # temp1.txt, tempA.txt など
2. フォルダの指定方法
# すべてのtempフォルダを無視
temp/
# ルート直下のtempフォルダのみ無視
/temp/
# 特定のパスを無視
src/temp/
src/*/temp/
3. 例外設定(!)の活用
# すべての.logファイルを無視
*.log
# ただし、important.logは例外として追跡
!important.log
# フォルダ全体を無視するが、特定ファイルは残す
temp/
!temp/keep.txt
よく使うパターン集
Python プロジェクト
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.env
venv/
env/
.pytest_cache/
Node.js プロジェクト
# Node.js
node_modules/
npm-debug.log*
.env
dist/
build/
.cache/
Java プロジェクト
# Java
*.class
*.jar
*.war
target/
.gradle/
build/
この章のまとめ
.gitignore
にはシンプルなパターン指定だけでなく、柔軟な除外設定も可能です。次は、.gitignore
を後から変更したときの注意点を紹介します。
.gitignoreが効かないときの対処法

なぜ効かないのか?
.gitignoreの重要なルール: 「すでにGitで追跡されているファイルは、.gitignoreに書いても無視されない」
例:こんな状況
config.ini
をすでにコミット済み- 後から
.gitignore
にconfig.ini
を追加 - でも
git status
でconfig.ini
が表示される
解決方法:追跡を停止する
1. 特定のファイルを追跡停止
# ファイルをGitの追跡から外す(ファイル自体は残る)
git rm --cached config.ini
# .gitignoreに追加
echo "config.ini" >> .gitignore
# 変更をコミット
git add .gitignore
git commit -m "config.iniを追跡対象から除外"
2. フォルダ全体を追跡停止
# フォルダをGitの追跡から外す
git rm --cached -r __pycache__/
# .gitignoreに追加
echo "__pycache__/" >> .gitignore
# 変更をコミット
git add .gitignore
git commit -m "__pycache__を追跡対象から除外"
3. 複数ファイルを一括で処理
# .gitignoreで指定したパターンに一致するファイルを一括削除
git rm --cached $(git ls-files -i --exclude-from=.gitignore)
# または、すべての追跡を一旦リセット
git rm --cached -r .
git add .
git commit -m "不要なファイルを追跡から除外"
実際の手順例
状況: .env
ファイルがすでにコミットされている場合
# 1. 現在の状況を確認
git status
# modified: .env が表示される
# 2. .envを追跡から外す
git rm --cached .env
# 3. .gitignoreに追加
echo ".env" >> .gitignore
# 4. 変更をコミット
git add .gitignore
git commit -m ".envファイルを追跡対象から除外"
# 5. 確認
git status
# .envが表示されなくなる
注意点とベストプラクティス
注意点
git rm --cached
は他の開発者にも影響する- チーム開発では事前に相談
- 削除するファイルが他の人の環境で必要でないか確認
- 設定ファイルの扱い
.env
を削除する場合、.env.example
を用意- 必要な設定項目を示すテンプレートを残す
ベストプラクティス
1. プロジェクト開始時に.gitignoreを設定
# プロジェクト開始時
mkdir my-project
cd my-project
git init
# 最初に.gitignoreを作成
curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
# 初回コミット
git add .gitignore
git commit -m "初期設定: .gitignoreを追加"
2. 設定ファイルのテンプレートを用意
# .envファイルの代わりに.env.exampleを作成
cp .env .env.example
# .env.exampleから機密情報を削除
# DATABASE_URL=your_database_url_here
# SECRET_KEY=your_secret_key_here
git add .env.example
git commit -m "環境変数のテンプレートを追加"
この章のまとめ
.gitignore
が効かないときは、「すでに追跡されているかどうか」を確認しましょう。最後に、よく使われるテンプレートを紹介します。
便利な.gitignoreテンプレート

GitHub公式のテンプレート
GitHubは多くのプログラミング言語やIDEごとの.gitignore
テンプレートを提供しています。
公式テンプレート集:
人気のテンプレート:
- Python: https://github.com/github/gitignore/blob/main/Python.gitignore
- Node.js: https://github.com/github/gitignore/blob/main/Node.gitignore
- Java: https://github.com/github/gitignore/blob/main/Java.gitignore
プロジェクト別テンプレート
Pythonプロジェクト用
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
*.manifest
*.spec
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Virtual environments
venv/
env/
ENV/
env.bak/
venv.bak/
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
React/Node.jsプロジェクト用
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Production build
build/
dist/
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
# ESLint cache
.eslintcache
# Optional npm cache directory
.npm
# Editor directories and files
.vscode/
.idea/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
自動生成ツールの活用
1. gitignore.ioを使う
ウェブサイト: https://www.toptal.com/developers/gitignore
使い方:
# コマンドラインから生成
curl -L "https://www.toptal.com/developers/gitignore/api/python,vscode,macos" > .gitignore
2. VSCodeの拡張機能
おすすめ拡張機能:
- gitignore
- Auto-Git-Ignore
グローバル.gitignoreの設定
複数プロジェクトで共通する設定は、グローバル設定を使いましょう。
設定手順
# 1. グローバル.gitignoreファイルを作成
touch ~/.gitignore_global
# 2. 共通設定を記述
cat << 'EOF' > ~/.gitignore_global
# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Editor
.vscode/
.idea/
*.swp
*.swo
*~
# Temporary files
*.tmp
*.temp
*.bak
~*
EOF
# 3. Gitの設定に登録
git config --global core.excludesfile ~/.gitignore_global
グローバル設定のメリット
- すべてのプロジェクトで自動適用
- OS固有ファイルを一括管理
- エディタの設定ファイルを統一除外
チーム開発での.gitignore管理
1. プロジェクト固有の設定
# プロジェクト固有の設定のみ記述
# データベースファイル
*.sqlite3
*.db
# アップロードファイル
uploads/
media/user_uploads/
# ログファイル
logs/
*.log
2. 個人設定の分離
# 個人的な設定は .git/info/exclude に記述
echo "my_notes.txt" >> .git/info/exclude
echo "personal_config/" >> .git/info/exclude
まとめ
重要ポイント
.gitignore
は、Gitを快適に使うための必須アイテムです。今回紹介した内容を振り返ると:
- 不要なファイルをGitから除外できる
- 書き方はシンプルだが柔軟性も高い
- すでに追跡されているファイルには効果がない点に注意
- テンプレートを活用して効率的に設定
.gitignore設定のベストプラクティス
タイミング | やること | 理由 |
---|---|---|
プロジェクト開始時 | 最初に.gitignoreを設定 | 後から追跡を外すのは面倒 |
開発中 | 新しい種類のファイルが出たら追加 | 継続的な管理が重要 |
チーム参加時 | 既存の.gitignoreを確認 | プロジェクトのルールを理解 |
コメント