Git のリポジトリを作成する際、.gitignore ファイルを適切に設定することは非常に重要です。誤って機密情報や不要なファイルをリポジトリに含めないために、以下のようなファイルやディレクトリを .gitignore に記述するのが一般的です。
gitignore に含めるべき内容
1. 機密情報関連
プロジェクトで利用する API キーやデータベースの接続情報などが記載されたファイルは必ず .gitignore に含めるべきです。
.env*.env.local(例えばdevelopment.env.localやtesting.env.local` など)config/secret.yaml
これらのファイルを誤って公開すると、第三者に機密情報を悪用されるリスクがあります。
サンプルファイルを用意するのが一般的
.env.exampleのように、必要な設定項目を記載したサンプルファイルを用意し、環境ごとの.envファイルは.gitignoreに含めるのが一般的です。
# APIキー
API_KEY=your_api_key_here
# データベース接続情報
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password_here
# デバッグ設定
DEBUG=true2. ビルドやキャッシュ関連
ビルドプロセスで生成されるファイルやキャッシュデータは、リポジトリには不要です。これらは開発環境ごとに異なる場合が多く、不要な差分が生じる原因になります。
node_modules/(npm や Yarn の依存関係)dist/(ビルド成果物).next/(Next.js のビルドキャッシュ)target/(Java や Scala のビルド成果物).cache/(ビルドキャッシュ)
package-lock.json を .gitignore に含めるかどうか
| 含めるべき場合 | ・依存関係の固定が必要な場合 ・npm 公式では、 package-lock.json をリポジトリに含めることが推奨されています。 |
| 含めないべき場合 | ・動的な依存関係管理が必要な場合 |
3. OS 特有のファイル
開発環境の OS によって自動生成されるファイルもリポジトリには不要です。
.DS_Store(macOS)Thumbs.db(Windows)ehthumbs.db(Windows).Spotlight-V100/(macOS)
4. IDE やエディタ関連
開発環境で使用する IDE やテキストエディタが生成する設定ファイルやキャッシュファイルも、通常はリポジトリに含めません。
.vscode/(VSCode のワークスペース設定).idea/(IntelliJ IDEA)*.iml*.swp(Vim).history/(一部エディタの履歴ファイル)
5. テストやログ関連
テスト実行中に生成されるファイルやログファイルもリポジトリには不要です。
coverage/(コードカバレッジデータ)*.log(ログファイル)test-output/
6. プラットフォーム固有のファイル
特定のプラットフォームやサービスと連携している場合、関連する設定ファイルを .gitignore に含めることがあります。
.env.production(サーバー環境で使用する環境ファイル)terraform.tfstate(Terraform の状態ファイル).dockerignore(Docker 用の無視リスト)
7. サンプル .gitignore ファイル
以下は一般的な .gitignore ファイルの例です:
# 依存関係のディレクトリ
node_modules/
# 環境変数ファイル
.env
.env.local
# IDE設定
.vscode/
# アップロードされたファイル
uploads/
# ログファイル
*.log
# macOSのシステムファイル
.DS_Store# 環境変数
.env
*.env.local
# Node.js 関連
node_modules/
dist/
# macOS
.DS_Store
# Windows
Thumbs.db
# VSCode
.vscode/
# Logs
*.log
# Coverage
coverage/
# ビルド成果物
build/
# IDE/エディタ関連
.idea/
*.swpgit status で正しく設定されているか確認
git status
git status.gitignoreに記載されているファイル git statusでは一切表示されない
誤って不要なファイルをコミットしないよう、git status や git diff を活用して確認しましょう。
リポジトリの再初期化
.gitignoreの設定を後から変更した場合、特に以下のような状況で再初期化は有効
- セキュリティ上の懸念
- 環境変数ファイル(.env)が誤ってコミット履歴に残っている
- APIキーなどの機密情報が含まれている可能性がある
- 設定の確実性
- .gitignoreの設定が正しく機能しているか不安
- 既に追跡されているファイルを確実に除外したい
- クリーンな状態の確保
- 不要なファイルの追跡を完全に防ぎたい
- コミット履歴を整理したい
# 隠しファイルも含めて表示
ls -Force
# 隠しファイルも含めて削除
Remove-Item .git -Recurse -Force> ls -Force
Mode LastWriteTime Length Name
---- ------------- ------ ----
d--h-- 2025/01/13 10:35 .git
d----- 2025/01/02 18:50 node_modules
d----- 2025/01/01 16:24 src
-a---- 2025/01/01 16:27 243 .env
-a---- 2025/01/13 10:26 254 .env.sample
-a---- 2025/01/13 10:11 258 .gitignore
-a---- 2025/01/01 18:42 928 docker-compose.yml
-a---- 2025/01/02 19:25 718 Dockerfile
-a---- 2025/01/02 18:50 104009 package-lock.json
-a---- 2025/01/02 18:50 384 package.json
> Remove-Item .git -Recurse -Force
> ls -Force
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/01/02 18:50 node_modules
d----- 2025/01/01 16:24 src
-a---- 2025/01/01 16:27 243 .env
-a---- 2025/01/13 10:26 254 .env.sample
-a---- 2025/01/13 10:11 258 .gitignore
-a---- 2025/01/01 18:42 928 docker-compose.yml
-a---- 2025/01/02 19:25 718 Dockerfile
-a---- 2025/01/02 18:50 104009 package-lock.json
-a---- 2025/01/02 18:50 384 package.json