.gitignoreとは?Gitで管理しないファイルを指定する方法を初心者向けに解説

Git/GitHub

.gitignoreは、Gitで管理しないファイルやフォルダを指定するための設定ファイルです。

Gitを使っていると、ソースコードとして管理したいファイルと、管理しなくていいファイルが出てきます。

たとえば、エディタの設定ファイル、ログファイル、環境変数ファイル、Node.jsのnode_modulesなどです。

こうしたファイルまでGitで管理してしまうと、リポジトリが重くなったり、他の人の環境では不要なファイルが混ざったりします。

この記事では、.gitignoreの役割、作り方、書き方、よく使う設定例、すでにGit管理してしまったファイルを除外する方法まで解説します。

.gitignoreとは

.gitignoreは、Gitに「このファイルは管理しなくていい」と伝えるためのファイルです。

Gitでは、ファイルを変更するとgit statusで変更内容が表示されます。

しかし、開発中にはGitで管理したくないファイルもあります。

たとえば、次のようなものです。

  • ログファイル
  • 一時ファイル
  • キャッシュファイル
  • パスワードやAPIキーを書いたファイル
  • 自動生成されるフォルダ
  • エディタやOSが作る設定ファイル

これらを毎回git statusに表示させると、必要な変更が見つけにくくなります。

.gitignoreに指定しておくと、Gitの管理対象から外せます。

.gitignoreで無視したいファイルの例

Webプログラミングでよく除外するファイルやフォルダには、次のようなものがあります。

対象理由
node_modules/npm installで再作成できるため
.envパスワードやAPIキーを書くことがあるため
*.log実行ログはGitで管理しないことが多いため
dist/ビルドで生成されるフォルダの場合があるため
.DS_StoremacOSが作る不要なファイルのため
Thumbs.dbWindowsが作る不要なファイルのため
.vscode/個人のエディタ設定を含む場合があるため

すべてのプロジェクトで同じ設定にする必要はありません。

そのプロジェクトでGit管理しなくてよいものを.gitignoreに書きます。

.gitignoreファイルを作る方法

.gitignoreは、プロジェクトの一番上のフォルダに作ることが多いです。

たとえば、次のような構成です。

my-project
├── .gitignore
├── index.html
├── style.css
├── script.js
└── README.md

Visual Studio Codeで作る場合は、プロジェクトフォルダを開き、ファイル名を.gitignoreにして新規作成します。

Windowsでは、先頭がドットのファイル名に慣れていないと少し分かりにくいかもしれません。

Visual Studio Code上で作れば、通常どおり.gitignoreという名前で作成できます。

PowerShellで作る場合は、プロジェクトフォルダで次のコマンドを実行します。

New-Item .gitignore

Git Bashを使っている場合は、次のコマンドでも作成できます。

touch .gitignore

.gitignoreの基本的な書き方

.gitignoreには、無視したいファイル名やフォルダ名を1行ずつ書きます。

たとえば、ログファイルを無視したい場合は、次のように書きます。

*.log

*.logは、拡張子が.logのファイルを無視する指定です。

フォルダを無視したい場合は、最後に/をつけます。

node_modules/

特定のファイルを無視したい場合は、ファイル名をそのまま書きます。

.env

コメントを書きたい場合は、先頭に#をつけます。

# 環境変数ファイル
.env

# ログファイル
*.log

# npmで作成されるフォルダ
node_modules/

.gitignoreの中身は、プロジェクトに合わせて追加していきます。

Web制作・JavaScript・Vue.jsで使う.gitignore例

HTML、CSS、JavaScriptだけの小さな練習サイトでは、.gitignoreに書く内容は少なくて済みます。

たとえば、次のように書けます。

# OSが作るファイル
.DS_Store
Thumbs.db

# エディタ設定
.vscode/

# ログファイル
*.log

Node.jsやVue.jsを使う場合は、node_modules/を無視することが多いです。

# npmでインストールされるパッケージ
node_modules/

# 環境変数ファイル
.env
.env.local

# ビルド結果
dist/

# ログファイル
*.log

# OSが作るファイル
.DS_Store
Thumbs.db

node_modules/は、npm installで再作成できます。

そのため、Gitで管理する必要はありません。

一方で、package.jsonpackage-lock.jsonは、インストールするパッケージ情報を管理するためにコミットすることが多いです。

package.json
package-lock.json

この2つは、基本的には.gitignoreに入れず、Gitで管理します。

PHP・WordPressで使う.gitignore例

PHPの学習用プロジェクトでも、ログファイルや環境変数ファイルはGit管理から外すことがあります。

# 環境変数ファイル
.env

# ログファイル
*.log

# OSが作るファイル
.DS_Store
Thumbs.db

# エディタ設定
.vscode/

WordPressテーマをGitで管理する場合は、プロジェクトの範囲によって.gitignoreの内容が変わります。

たとえば、WordPress全体ではなく自作テーマだけを管理するなら、テーマフォルダ内のファイルだけをGit管理する形でも構いません。

WordPress本体やアップロード画像、キャッシュファイルなどをまとめてGit管理すると、不要なファイルが多くなりやすいです。

WordPress全体を管理する場合は、次のようなものを除外することがあります。

# アップロード画像
wp-content/uploads/

# キャッシュ
wp-content/cache/

# 環境設定
.env

# ログ
*.log

# OSが作るファイル
.DS_Store
Thumbs.db

ただし、WordPressの管理方法は環境によって変わります。

初心者のうちは、まず自分で作ったテーマや学習用コードをGit管理するところから始めると扱いやすいです。

.envをGit管理しない理由

.envは、環境変数を書くために使われることがあるファイルです。

たとえば、次のような情報を書くことがあります。

DB_USER=root
DB_PASSWORD=password
API_KEY=xxxxxxxxxx

このようなファイルをGitHubなどにpushしてしまうと、パスワードやAPIキーが外部に見えてしまう可能性があります。

そのため、.env.gitignoreに入れることが多いです。

.env

ただし、設定項目の見本として.env.exampleを用意することがあります。

.env
.env.example

この場合、.envはGit管理しません。

.env.exampleには、実際のパスワードやAPIキーを書かず、見本だけを書いてGit管理します。

DB_USER=your_user
DB_PASSWORD=your_password
API_KEY=your_api_key

こうすると、他の人がプロジェクトを使うときに、どの設定が必要なのか分かりやすくなります。

すでにGit管理しているファイルを.gitignoreで外す方法

.gitignoreで注意したいのは、すでにGitで管理しているファイルには、そのままでは効かないことです。

たとえば、すでに.envをコミットしてしまったあとに、.gitignoreへ次のように書いたとします。

.env

この場合、.envはすでにGit管理されているため、.gitignoreに書いただけでは管理対象から外れません。

Git管理から外しつつ、ローカルのファイルは残したい場合は、次のコマンドを使います。

git rm --cached .env

フォルダをまとめて外す場合は、次のように書きます。

git rm -r --cached node_modules/

そのあと、.gitignoreに対象ファイルやフォルダを書いて、コミットします。

git add .gitignore
git commit -m ".gitignoreを追加"

git rm --cachedは、Gitの管理対象から外すコマンドです。

ローカルのファイル自体を削除するわけではありません。

.gitignoreが効いているか確認する方法

.gitignoreを作ったら、git statusで確認します。

git status

無視したいファイルが表示されなくなっていれば、設定できています。

特定のファイルがなぜ無視されているのか確認したい場合は、次のコマンドを使えます。

git check-ignore -v ファイル名

たとえば、.envが無視されているか確認する場合は、次のように書きます。

git check-ignore -v .env

どの.gitignoreのどの行で無視されているかを確認できます。

何も表示されない場合は、そのファイルは.gitignoreで無視されていない可能性があります。

.gitignoreでよくあるミス

.gitignoreでよくあるミスは、すでにコミット済みのファイルを.gitignoreに書いただけで安心してしまうことです。

すでにGit管理されているファイルは、.gitignoreに書いてもそのままでは除外されません。

その場合は、先ほどのようにgit rm --cachedを使います。

git rm --cached ファイル名

もう一つ多いのは、.envなどの秘密情報を一度GitHubにpushしてしまうことです。

もしパスワードやAPIキーを公開してしまった場合、.gitignoreに追加するだけでは不十分です。

すでに外部に出た情報は、パスワード変更やAPIキーの再発行が必要になります。

そのため、.envのようなファイルは、最初から.gitignoreに入れておくのが安全です。

また、.gitignoreに何でも入れすぎるのもよくありません。

プロジェクトに必要な設定ファイルまで除外すると、他の環境で動かすときに必要な情報が足りなくなります。

Git管理するものと、Git管理しないものを分けて考えることが大切です。

.gitignoreの基本フロー

新しいプロジェクトで.gitignoreを使う基本の流れは、次の通りです。

  1. プロジェクトフォルダに.gitignoreを作る
  2. Git管理しないファイルやフォルダを書く
  3. git statusで表示されないことを確認する
  4. .gitignore自体はGit管理する
  5. 必要に応じてコミットする

コマンドで書くと、次のような流れです。

git status

# .gitignoreを作成して編集する

git status
git add .gitignore
git commit -m ".gitignoreを追加"

すでに管理してしまったファイルを外す場合は、次の流れです。

git rm --cached .env
git add .gitignore
git commit -m ".envをGit管理から除外"

フォルダを外す場合は、次のようにします。

git rm -r --cached node_modules/
git add .gitignore
git commit -m "node_modulesをGit管理から除外"

まとめ

.gitignoreは、Gitで管理しないファイルやフォルダを指定するためのファイルです。

Webプログラミングでは、node_modules/.env、ログファイル、キャッシュファイル、OSやエディタが作るファイルなどを除外することが多いです。

基本的な書き方は、無視したいファイルやフォルダを1行ずつ書くだけです。

.env
node_modules/
*.log
.DS_Store
Thumbs.db

注意点は、すでにGit管理しているファイルには.gitignoreがそのままでは効かないことです。

すでに管理してしまったファイルを外す場合は、次のようにします。

git rm --cached ファイル名

フォルダの場合は、次のようにします。

git rm -r --cached フォルダ名/

.gitignoreを正しく使うと、不要なファイルをコミットせずに済みます。

Gitを使うなら、git addgit commitとあわせて、.gitignoreの基本も早めに覚えておきましょう。

タイトルとURLをコピーしました