【Gold 開発記録 Ep03】巨大プロジェクトのPushに失敗し続けた話と、最終的に成功した方法【GitHub】

あの人にシェアしたら喜ばれるかも!

こんにちは、なかしんです。前回『Beach of the Dead』(以下BOTD)のクローンを取ってからの話です。今回は、それを複製して新レポジトリGOLDを作ろうと思います。

ゲーム再開発宣言をしてから、進んだのはたったこれだけです。今回の開発はこれくらいのペースで進んでいくことをお知らせします。

というのも作業のウエイトは、

  • 副業の不労所得マシーン構築(85%)
  • 本業の旅ブロガー(10%)
  • 趣味のゲーム開発(5%)

なのです。あしからず。

さて今日は、自分のUnityプロジェクトをGitHubにアップしようとして、何度もPushエラーに苦しんだ末、やっと成功した話を記録しておきます。


🔧 やったことの流れ


1. 既存プロジェクト【BOTD】をGitHubからクローン
2. ローカルで複製し、名前を【BOTD_copy】に変更
3. GitHub上で新たに【GOLD】というレポジトリを作成
4. それをローカルにクローンし、~/naka/GAME/GOLD に配置
5. 中身を【BOTD_copy】で置き換え、GOLDに移植完了
6. コミットしてプッシュしようとしたが……

🚨 エラー地獄の始まり

最初に出たのはこのエラー:

error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly

GitHubがアップロード中に接続を切断してしまうエラーです。
Unityのプロジェクトはサイズが大きいため、こういったことがよく起きます。

🕵️ 原因を調査したところ…

ローカルで調べてみたら、以下のような大容量フォルダがPushの邪魔をしていました:

457M Build
2.9G Assets
77M Library

GitHubのPush制限(概ね2GB以下推奨)を余裕で超えていたのが原因でした。

忘れていたんだよね、不要なデータはコミットしない様にしていたことを。しかし数年経てばそんな事すら忘れてしまいます。人間だもの。

✅ 解決までの道のり(要点)


① .gitignore をちゃんと設定(Unity用)

Library/
Temp/
obj/
Build/
Logs/
UserSettings/
MemoryCaptures/
Assets/

② 一度コミットしてしまった不要フォルダを削除

git rm -r –cached Build Assets
git commit -m “remove Build and Assets from repo for push success”


③ Gitの履歴ごと不要フォルダを完全に削除(git-filter-repo)

brew install git-filter-repo

git filter-repo –force –path Build –invert-paths
git filter-repo –force –path Assets –invert-paths

④ origin(GitHub URL)が消えたので再登録

git remote add origin https://github.com/oknaka/GOLD.git

⑤ 最終Push(強制)

git push -f origin main

🏁 結果:Push成功!

GitHub上のGOLDレポジトリに、スッキリ軽量化されたプロジェクトが無事反映されました。
本当に長い戦いでしたが、最大のポイントは「いかに無駄なものを除外するか」でした。

💡 学んだこと

  • UnityプロジェクトはそのままPushすると高確率で失敗する
  • .gitignoreは最初にちゃんと設定しよう
  • git filter-repo は「過去のミスも消す」最終兵器
  • Pushに失敗したら、まずプロジェクトの容量を疑うべし

✍️ まとめ

Pushできないエラーは、初心者でもベテランでもハマるものです。知らんけど。でも、正しく削って整えてからPushすれば、必ず成功します。

これから同じように困ってる人の助けになれば嬉しいです。

以上、なかしんのPush地獄脱出ログでした🔥

Gold開発

あの人にシェアしたら喜ばれるかも!