MENU

【Git初心者向け】ファイルをGit管理から除外してリポジトリから削除する方法

Gitで管理しているプロジェクトで、「このファイルは管理したくない」「間違えてコミットしてしまった」という経験はありませんか?

この記事では、ファイルをGitの管理対象から外し、リポジトリから削除する方法を初心者にもわかりやすく解説します。

目次

この記事でわかること

  • Gitでファイルを管理対象から外す方法
  • ローカルのファイルは残してリポジトリからだけ削除する方法
  • .gitignoreの正しい使い方
  • よくあるトラブルと解決策

なぜファイルをGit管理から除外する必要があるのか

以下のようなファイルはGitで管理すべきではありません:

  • 環境変数ファイル(.env、config.jsonなど) – APIキーやパスワードが含まれる
  • 依存関係フォルダ(node_modules、vendor など) – サイズが大きく必要ない
  • ビルド成果物(dist、buildフォルダなど) – 自動生成されるファイル
  • ログファイル(*.log) – 開発環境固有の情報
  • 個人設定ファイル(.DS_Store、.ideaなど) – 他の開発者に不要

これらを誤ってコミットすると、セキュリティリスクやリポジトリの肥大化を招きます。

Git管理から除外する基本手順

ステップ1: ファイルをリポジトリから削除(ローカルには残す)

これが最も一般的な方法です。リポジトリからは削除しますが、ローカルのファイルは残ります。

git rm --cached ファイル名

フォルダ全体を削除する場合:

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

重要ポイント:

  • --cached オプションを付けることで、ローカルのファイルは削除されません
  • -r オプションはフォルダを再帰的に処理するために必要です

ステップ2: .gitignoreに追加

今後、同じファイルが追跡されないように.gitignoreに追加します。

echo "ファイル名" >> .gitignore

または、テキストエディタで.gitignoreファイルを開いて追加することもできます:

# .gitignoreファイル
.env
node_modules/
*.log
dist/

ステップ3: 変更をコミット

git add .gitignore
git commit -m "Remove sensitive files from tracking and update .gitignore"

ステップ4: リモートリポジトリに反映

git push

これで完了です!指定したファイルはGitHubやGitLabなどのリモートリポジトリからも削除されます。

実践例:よくあるケース別の対処法

ケース1: .envファイルを除外したい

環境変数ファイルは機密情報を含むため、必ず除外しましょう。

# リポジトリから削除(ローカルには残す)
git rm --cached .env

# .gitignoreに追加
echo ".env" >> .gitignore

# コミットしてプッシュ
git add .gitignore
git commit -m "Remove .env from tracking"
git push

ケース2: node_modulesを除外したい

依存関係フォルダは非常に大きいため、リポジトリに含めるべきではありません。

# リポジトリから削除
git rm --cached -r node_modules

# .gitignoreに追加
echo "node_modules/" >> .gitignore

# コミットしてプッシュ
git add .gitignore
git commit -m "Remove node_modules from tracking"
git push

ケース3: すべてのログファイルを除外したい

ワイルドカードを使って、特定の拡張子を持つファイルをまとめて除外できます。

# すべての.logファイルを削除
git rm --cached *.log

# .gitignoreに追加
echo "*.log" >> .gitignore

# コミットしてプッシュ
git add .gitignore
git commit -m "Remove log files from tracking"
git push

ローカルからも完全に削除したい場合

もしローカルのファイルも不要な場合は、--cachedオプションを付けずに実行します。

git rm ファイル名
git commit -m "Delete file completely"
git push

注意: この方法はローカルのファイルも削除されるため、慎重に実行してください。

よくあるトラブルと解決策

トラブル1: .gitignoreに追加したのに除外されない

原因: すでにGitで追跡されているファイルは、.gitignoreに追加しただけでは除外されません。

解決策: 上記のgit rm --cachedコマンドで一度削除する必要があります。

トラブル2: 複数のファイルを一度に削除したい

解決策: スペース区切りで複数指定できます。

git rm --cached file1.txt file2.txt file3.txt

または、パターンマッチを使用:

git rm --cached *.tmp

トラブル3: 過去のコミット履歴からも削除したい

git rmでは最新のコミットから削除されるだけで、過去の履歴には残ります。完全に削除するには、Git履歴の書き換えが必要です(上級者向け)。

# 注意: これは履歴を書き換えるため、チームでの使用は慎重に
git filter-branch --tree-filter 'rm -f ファイル名' HEAD

または、より安全なgit filter-repoツールの使用をおすすめします。

.gitignoreのベストプラクティス

効果的な.gitignoreファイルの例:

# 環境変数
.env
.env.local
.env.*.local

# 依存関係
node_modules/
vendor/

# ビルド成果物
dist/
build/
*.min.js

# ログファイル
*.log
logs/

# OS固有ファイル
.DS_Store
Thumbs.db

# エディタ設定
.vscode/
.idea/
*.swp

ヒント: プロジェクトの種類に応じた.gitignoreのテンプレートは、gitignore.ioで生成できます。

まとめ

Gitでファイルを管理対象から除外する手順をおさらいします:

  1. git rm --cached ファイル名 でリポジトリから削除
  2. .gitignoreに追加して今後の追跡を防ぐ
  3. 変更をコミットしてプッシュ

この方法を覚えておけば、機密情報の漏洩を防ぎ、リポジトリを適切な状態に保つことができます。

特に.envファイルやnode_modulesなどは、プロジェクト開始時に必ず.gitignoreに追加することを習慣にしましょう。

プログラミングの独学におすすめ
プログラミング言語の人気オンラインコース
独学でプログラミングを学習している方で、エラーなどが発生して効率よく勉強ができないと悩む方は多いはず。Udemyは、プロの講師が動画で実際のプログラムを動かしながら教えてくれるオンライン講座です。講座の価格は、セール期間中には専門書籍を1冊買うよりも安く済むことが多いです。新しく学びたいプログラミング言語がある方は、ぜひUdemyでオンライン講座を探してみてください。
目次