大容量ファイルをコミットしようとした際の警告と .gitignore を使ったファイル除外方法

2026年10月15日

広告

この資料では、GitHub Desktop 上で 100MB を超えるファイルをコミットしようとした際に表示される警告メッセージと、その後に行う .gitignore 設定によるファイルの除外方法について解説します。


1. 大容量ファイルコミット時の警告

図1:大容量ファイルはコミットできても、100 MiBを超えるとGitHubへのプッシュが拒否されることを示す図
  1. 100MB 超ファイルのコミット時に表示される警告
    • GitHub Desktop では、GitHub の制限により 100MB を超えるファイルが含まれていると下記のようなダイアログが表示され、プッシュに失敗します。
  • ここで「Commit anyway」を選んでも、最終的には GitHub へのプッシュがブロックされます。
  • 推奨する対応は「Cancel」を押してコミットを取りやめることです。

「Commit anyway」を選んだ場合や、別のツールでコミットした場合は、プッシュ時に次のようなエラー(File size limit exceeded)が表示されます。この場合はすでにコミットに大容量ファイルが含まれているため、.gitignore に追加するだけでは解決しません。対処法は「2.2」で解説します。

なお、50MB を超えるファイルは、プッシュ自体は成功しますが GitHub から警告(推奨サイズ超過)が表示されます。100MB 未満でもリポジトリが重くなる原因になるため、同じように管理方法を見直しましょう。(「MB」と「MiB」の違いは、次の補足を参照してください。)

補足:MB と MiB の違い

  • MB(メガバイト)は 1,000,000 バイト(10の6乗)、MiB(メビバイト)は 1,048,576 バイト(2の20乗)です。
  • GitHub の上限は 100 MiB = 104,857,600 バイトで、MB に直すと約 104.9MBです。本記事では分かりやすさのため「100MB」と書いています。
  • 同じファイルでも、表示する側によって数字が変わります。Windows のエクスプローラーは 1024 を基準に計算して「MB」と表示し、Mac のFinder は 1000 を基準に表示します。例えば 100 MiB のファイルは、Windows では「100 MB」、Mac では「約 105 MB」と表示されます。
  • 上限ぎりぎりの大きさのファイルは、表示のしかたで判断がずれます。余裕をもって 100MB より小さく保つのが安全です。

2. .gitignore を使ってファイルを除外する

2.1 コミット前のファイルを除外する手順

  1. 警告が出たらコミットを取り消す
    • 先ほどの警告ダイアログで「Cancel」を選択し、大容量ファイルをコミットしないようにします。
  2. GitHub Desktop の「Changes」タブでファイルを確認
    • 再度、リポジトリの変更ファイル一覧を確認します。
  3. 対象ファイルを .gitignore に追加する
    • 右クリックメニューから「Ignore file (add to .gitignore)」を選択します。
  • 今回は、画像ファイルをフォルダーごとGitの管理対象外とします
  • この操作により、.gitignore ファイルが自動的に更新されます。
  1. .gitignore の内容をコミット
    • .gitignore に追加された変更をコミットします。
    • これで、該当ファイルはリポジトリの追跡対象から外れ、今後はコミットされなくなります。

Unity プロジェクトの場合の考え方

  • Library/、Temp/、Obj/、Logs/、UserSettings/ などの自動生成フォルダーは、もともと Git で管理しません。GitHub でリポジトリを作成するときに「Unity」用の .gitignore テンプレートを選ぶと、最初から設定されます。
  • 今回の例のようにアセットパック(ダウンロードした素材)を除外した場合、共有相手は各自で同じアセットをインポートする必要があります。チームで使う素材は「除外する」か「Git LFS で管理する」かを、あらかじめ決めておきましょう。

2.2 すでにコミットしてしまった場合(まだプッシュしていないとき)

.gitignore に追加しても、すでにコミットに含まれているファイルは履歴に残ったままです。プッシュは、履歴に 100MB を超えるファイルが含まれている限り拒否されます。次の手順でコミットを取り消してから、やり直します。

図2:Undo Commitでコミットを取り消し、.gitignoreに追加して再コミット・プッシュする復旧手順の図
  1. GitHub Desktop の「History」タブで、一番新しいコミットを右クリックして「Undo Commit」を選び、取り消します。変更内容は「Changes」タブに戻ります。大容量ファイルが古いコミットに含まれている場合は、最新のコミットから順に、そのコミットまで繰り返します(コマンドなら、取り消す数に合わせて git reset --soft HEAD~3 のように指定します)。
  2. 「Changes」タブで大容量ファイルを右クリックし、「Ignore file (add to .gitignore)」で除外します。
  3. 過去のコミットですでに追跡されていたファイルは、.gitignore に追加しても追跡が続きます。その場合は git rm --cached <ファイル名>(フォルダーなら -r を付ける)で追跡対象から外します。ファイル本体はディスク上に残ります。
  4. .gitignore の変更をコミットして、プッシュします。

上級者向け:コミットメッセージを残したまま、大容量ファイルだけを取り除く方法

Undo Commit では、取り消したコミットのメッセージも履歴から消えます。メッセージを残したい場合は、ターミナル(Git Bash など)で git rebase -i を使い、大容量ファイルを追加したコミットだけを修正できます。プッシュ前のコミットにだけ使えます。GitHub Desktop には、この操作をする画面はありません。

  1. 失敗しても戻れるように、バックアップ用のブランチを作ります。git branch backup-before-fix
  2. git rebase -i origin/main を実行します(origin/main は自分のブランチに合わせます)。開いたエディタで、大容量ファイルを含むコミットの行頭の pick を edit に書き換えて保存します。
  3. そのコミットで止まるので、git rm --cached <ファイルのパス> でファイルをコミットから外し、git commit --amend --no-edit でメッセージを変えずにコミットを作り直します。ファイル本体はディスクに残ります。
  4. git rebase --continue で続行します。
  5. git log origin/main..HEAD --stat で、大容量ファイルが一覧に出ないことを確認してからプッシュします。

注意

  • 後ろのコミットが同じファイルを変更していると、途中で競合(コンフリクト)が出ることがあります。その場合も、同じ git rm --cached <ファイルのパス> を実行してから git rebase --continue で進めます。
  • コミットの ID は変わりますが、プッシュ前であれば問題ありません。
  • プッシュ済みのコミットや、他の人と共有しているブランチには使わないでください。
  • 再発を防ぐため、対象のファイルを .gitignore にも追加してコミットしておきましょう。
  • 手順に不安がある場合は、無理をせず、上の Undo Commit の方法を使うか、講師・チームに相談してください。

2.3 すでにプッシュ済みの履歴から削除したい場合

git rm --cached で止められるのは今後の追跡だけで、過去のコミットからファイルは消えません。履歴から完全に取り除くには、git filter-repo(または git filter-branch)による履歴の書き換えと強制プッシュが必要です。共同開発中は他のメンバーのリポジトリとの同期が複雑になるため、実行前に必ずチームで相談してください。


3. .gitignore で除外したファイルを別途管理する方法

  1. Git LFS (Large File Storage) の利用
    • 大容量ファイルをリポジトリで管理したい場合は、GitHub が提供する Git LFS を導入するのが推奨です。
    • Git LFS で管理すれば 100MB を超えるファイルも扱うことができます(ただし容量上限と課金プランに注意)。
  2. 外部ストレージを利用
    • 画像や動画などの大容量ファイルをリポジトリとは別のクラウドストレージ(例: Dropbox, Google Drive など)で管理するのも一般的です。
    • .gitignore で除外したファイルを、外部ストレージの共有リンクなどでメンバーと共有する方法があります。

Git LFS を使う場合の最小手順

  1. Git LFS をインストールし、初回のみ git lfs install を実行します。
  2. 対象の種類を登録します(例: git lfs track "*.psd")。.gitattributes が作成・更新されます。
  3. .gitattributes をコミットしてから、大容量ファイルをコミットします。

注意: LFS の登録は、ファイルをコミットする前に行います。すでにコミットしてしまった後は、2.2 の手順でコミットを取り消してから登録してください。また、GitHub の無料枠には LFS の保存容量と転送量の上限があるため、利用前に GitHub の最新の料金・制限ページで確認しましょう。


4. まとめ

  • GitHub では 100MB を超えるファイルは通常の手順ではプッシュできません(50MB を超えると警告が表示されます)。
  • 警告ダイアログが出たら「Commit anyway」ではなく 「Cancel」 を選び、該当ファイルを .gitignore に追加してコミットから除外するのが安全です。
  • すでにコミットしてしまった場合は、プッシュ前なら「Undo Commit」でコミットを取り消してから .gitignore を設定します。履歴に残ってしまったファイルを消すには、履歴の書き換えが必要になります。
  • 大容量ファイルを継続的に扱う場合は、Git LFS や 外部ストレージ を活用しましょう。

以上が、GitHub Desktop 上で 100MB を超えるファイルに対する警告が出た際に .gitignore を用いてファイルを除外する手順です。

訪問数 382 回, 今日の訪問数 1回

広告