Gitでは、すべてのファイルを履歴に入れるべきではありません。秘密情報、依存フォルダ、ビルド成果物、ログなどは、通常Git管理から外します。そのために使うのが .gitignore です。
一言でいうと
.gitignoreは、Gitに管理させたくないファイルやフォルダを指定するための設定ファイルです。
無視する代表例
| 種類 | 例 |
|---|---|
| 秘密情報 | .env, .env.local |
| 依存フォルダ | node_modules/ |
| ビルド成果物 | dist/, build/ |
| ログ | *.log |
| OS固有ファイル | .DS_Store |
| エディタ設定 | チーム方針による |
基本例
.env
.env.local
node_modules/
dist/
build/
*.log
.DS_Store
.gitignore は、プロジェクトルートに置くことが多いです。
なぜ.envを入れるのか
.env には、APIキー、DB接続情報、アクセストークンなどが入ることがあります。
API_KEY=example
DATABASE_URL=example
これを公開リポジトリへpushすると危険です。
.envは便利ですが、GitHubにpushしたら秘密情報ではなくなります。
すでにcommitしたファイルはどうなるか
.gitignore は、これから追加される未追跡ファイルを無視する設定です。すでにGit管理されているファイルは、.gitignore に書いても自動では外れません。
管理対象から外すには、次のようにします。
git rm --cached .env
その後、.gitignore に .env が入っていることを確認してcommitします。
git add .gitignore
git commit -m "chore: ignore environment files"
ただし、すでに秘密情報をpushした場合は、ファイル削除だけでは不十分です。キーの無効化と再発行を検討します。
チームで共有する例
.env は共有しませんが、必要な変数名は .env.example で共有できます。
API_KEY=
DATABASE_URL=
.env.example には本物の値を入れません。
よくある誤解
| 誤解 | 実際 |
|---|---|
.gitignore に書けば過去の履歴から消える | 消えません |
.env はローカルだから安全 | pushしたら公開される場合があります |
node_modules もcommitすべき | 通常はpackage.jsonから復元します |
.env.example に本物の値を書く | ダミー値や空欄にします |
まとめ
.gitignore は、Gitに管理させたくないファイルやフォルダを指定する設定です。.env、依存フォルダ、ビルド成果物、ログなどを除外します。すでにcommit済みのファイルは .gitignore だけでは外れないため、git rm --cached などで管理対象から外します。秘密情報をpushした場合は、削除ではなく無効化と再発行が必要です。