Gitの.gitignoreとは?特定ファイルを除外する使い方を解説

PR Git

Gitの.gitignoreとは?特定ファイルを除外する使い方を解説

💡 この記事でわかること

  • .gitignoreとは何か、なぜ必要なのか
  • .gitignoreファイルの作り方・書き方
  • よく除外されるファイル・フォルダの具体例
  • すでにcommitしてしまったファイルをあとから除外する方法
  • .gitignoreが効かないときの確認ポイント

👉 Gitの基本的な使い方(add・commit・push)についての記事はこちら


1. .gitignoreとは?

.gitignoreとは、
👉 指定したファイルやフォルダを、Gitの管理対象(commitの対象)から除外するための設定ファイルです。

プロジェクトの中には、Gitで履歴を残す必要がない(むしろ残すべきではない)ファイルがいくつもあります。

  • パスワードやAPIキーなどの秘密情報が入った設定ファイル
  • npmなどでインストールした大量のライブラリ(node_modulesフォルダなど)
  • OSやエディタが自動生成する管理ファイル(.DS_Storeなど)

💡 こうしたファイルを.gitignoreで指定しておくと、git add .のように一括で変更を追加しても、対象外として自動的にスキップされます。秘密情報を誤ってGitHubなどに公開してしまう事故や、無関係なファイルで差分が見づらくなることを防げます。


2. .gitignoreファイルの作り方・書き方

ファイルを作成する

プロジェクトのルート(一番上の階層、.gitフォルダがある場所)に、.gitignoreという名前のファイルを作成します。

touch .gitignore

👉 先頭の「.(ドット)」を忘れないようにしましょう。VS CodeのExplorerで作成する場合も、ファイル名を「.gitignore」と入力すればOKです(拡張子はありません)。

基本の書き方

除外したいファイル名やフォルダ名を、1行に1つずつ書いていきます。

node_modules
.env
.DS_Store

主な記法は次の通りです。

書き方意味
node_modulesその名前のファイル・フォルダをどの階層でも除外
/dist先頭に/を付けると、ルート直下のものだけを対象にする
*.logワイルドカード(*)で「拡張子が.logのファイルすべて」を指定
!important.log先頭に!を付けると、除外対象から例外的に除く(再び追跡対象にする)
# コメント#から始まる行はコメント扱いになり無視される

💡 フォルダを指定する場合、末尾に/を付けると「フォルダのみ」を対象にできます(例: dist/)。付けない場合は、同名のファイルも対象に含まれます。


3. よく除外されるファイル・フォルダの例

プロジェクトの種類によって多少異なりますが、代表的なものは次の通りです。

  • node_modules/:npm installで生成される、ライブラリ本体が入った巨大なフォルダ。package.jsonがあれば誰でも再現できるためGit管理は不要
  • .env:APIキーやデータベースのパスワードなど、秘密情報を書いた環境変数ファイル
  • .DS_Store:Macが各フォルダに自動生成する管理用ファイル。開発内容とは無関係
  • dist/・build/:ビルドによって自動生成される成果物フォルダ
  • .vscode/:VS Codeの個人的なエディタ設定。チームで共有したい設定だけ例外指定することもある

👉 GitHubには、言語やフレームワークごとに定番の.gitignoreテンプレートを集めた公式リポジトリ(github/gitignore)があります。ゼロから書かなくても、使っている技術に近いテンプレートをコピーして使うのが効率的です。


4. すでにcommitしてしまったファイルを除外する

👉 .gitignoreは「まだ一度もcommitしていないファイル」にしか効きません。すでにGitの管理下に入ってしまっているファイルは、.gitignoreに追記しただけでは除外されず、そのまま追跡され続けます。

この場合は、Gitの管理からファイルを切り離す操作が別途必要です。

git rm --cached .env
git commit -m "Remove .env from tracking"

💡 --cachedオプションを付けることで、パソコン上の実ファイルは残したまま、Gitの管理対象からだけ外せます(オプションを付けずにgit rmだけ実行すると、実ファイル自体が削除されてしまうので注意)。フォルダごと除外したい場合は-rも付けます。

git rm -r --cached node_modules

⚠️ すでにpush済みで、かつ.envのような秘密情報が含まれていた場合は、この操作だけでは不十分です。過去のcommit履歴自体に情報が残ってしまっているため、該当のパスワードやAPIキーはすみやかに無効化・再発行することをおすすめします。


5. .gitignoreが効かないときの確認ポイント

  • すでにcommit済みのファイルではないか:上記4の手順でgit rm --cachedが必要です
  • .gitignoreの保存場所は正しいか:基本的にはプロジェクトのルート(.gitフォルダと同じ階層)に置きます
  • ファイル名のタイプミスはないか:大文字・小文字や、末尾のスペースなどを確認してください

今どのファイルが除外設定によってスキップされているかは、次のコマンドで確認できます。

git status --ignored

まとめ

今回はGitの.gitignoreについて解説しました。

  • .gitignoreは、指定したファイル・フォルダをGitの管理対象から除外する設定ファイル
  • node_modulesや.envなど、共有不要・秘密情報を含むファイルは必ず除外する
  • すでにcommit済みのファイルはgit rm --cachedで管理から切り離す必要がある

プロジェクトを作ったら、最初のcommitをする前に.gitignoreを用意しておく習慣をつけると、あとから慌てて秘密情報を削除する手間がなくなります。ぜひ実際に手を動かして試してみてください。

-Git
-, ,