【Git】100MB越えのファイルをプッシュしようとしたらエラーになる件の解決方法

エラー内容

iOSアプリ開発最中に、RalmSwiftというデータベース系のライブラリを追加し、Gitにプッシュしようとしたら、以下のようなエラーが表示されました。

remote: warning: File Pods/Realm/core/realm-monorepo.xcframework/watchos-armv7k_arm64_32/librealm-monorepo.a is 74.45 MB; this is larger than GitHub’s recommended maximum file size of 50.00 MB
remote: warning: File Pods/Realm/core/realm-monorepo.xcframework/ios-arm64_x86_64_i386-simulator/librealm-monorepo.a is 67.05 MB; this is larger than GitHub’s recommended maximum file size of 50.00 MB
remote: warning: File Pods/Realm/core/realm-monorepo.xcframework/tvos-arm64_x86_64-simulator/librealm-monorepo.a is 52.83 MB; this is larger than GitHub’s recommended maximum file size of 50.00 MB
remote: warning: File Pods/Realm/core/realm-monorepo.xcframework/ios-armv7_arm64/librealm-monorepo.a is 76.24 MB; this is larger than GitHub’s recommended maximum file size of 50.00 MB
remote: error: Trace: f8403a2036ed669d07c637dfa05eec66e6ae949d174c224232552f24bb00e03b
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File Pods/Realm/core/realm-monorepo.xcframework/watchos-arm64_i386_x86_64-simulator/librealm-monorepo.a is 114.50 MB; this exceeds GitHub’s file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage – https://git-lfs.github.com.
To https://github.com/RikutoSato/Sample.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to ‘https://github.com/RikutoSato/Sample.git’

原因

プッシュしようとしているプロジェクト内に、100MBを超えるファイルがあるため、エラーになっています。Githubは、100MBを超えるファイルはアップロードできません。

warningは、50MBを超えているので、今後100MBを超える可能性がありますというのを教えてくれています。

今回RealmSwiftを入れたことで、エラーになっているのは、Pods/Realm/core/realm-monorepo.xcframework/watchos-arm64_i386_x86_64-simulator/librealm-monorepo.aの一件です。

おそらく、simulatorと書いているので、必要ないかと思うので、削除しようと思います。

解決方法

今回は、100MBを超えるファイルは必要ないファイルだったため、単純にファイルを削除し、再プッシュしようと思います。

STEP.1
コミットID確認

まず、コミットする前の状態に戻します。以下のコマンドを打って一つ前のコミットIDをコピーしてください。

git log

STEP.2
コミット状態を戻す

以下のコマンドを打ってコミット状態を戻します。コミットIDのところに先ほどコピーしたコミットIDをペーストしてください。

git reset --soft コミットID
STEP.3
100MBを越えてるファイルを検索

以下のコマンドを打って、100MBを超えるファイルのパスを割り出します。

find . -size +100M -ls

STEP.4
100MBのファイルを除外する

100MBを越えているファイルを、コミット対象から除外します。複数ある場合は、すべて行なってください。

git reset ./Pods/Realm/core/realm-monorepo.xcframework/watchos-arm64_i386_x86_64-simulator/librealm-monorepo.a
STEP.5
100MBのファイルを削除

今回は、必要のないファイルだったため削除します。

rm ./Pods/Realm/core/realm-monorepo.xcframework/watchos-arm64_i386_x86_64-simulator/librealm-monorepo.a

remove [path]?と聞かれたら、yと打ってEnterを押してください。

STEP.6
コミット&プッシュ

あとは、いつも通り、コミットしてください。

これで、コミットできたかと思います。