🦔

【GitHub】this exceeds GitHub's file size limit of 100.00 MB でpushできない

2022/05/31に公開

やった事

やってしまった事

ずっとmainブランチで作業している個人用のリポジトリで、
terraformのバイナリファイルをpushしてしまった。
remote: error: File 問題のあるfileパス is 180.60 MB; this exceeds GitHub's file size limit of 100.00 MB
というメッセージが出た。

修正しようと当該fileが含まれるコミットをrevertするが、
コミットログに100mbを超えるファイルがあるままなので、
状況は変わらないまま。その後手動で現状のファイルの状態を正しくしたが同じ。
コミットログから問題のあるfileパスのfileを消さなくてはならない。

rebaseで修正

repo-name $ git log
commit 手動でfileを正しい状態にしたコミットのコミットハッシュ
Author: ユーザー名 メールアドレス
Date:   日時

    手動でfileを正しい状態にしたコミットのコミットメッセージ
    
commit revertのコミットハッシュ
Author: ユーザー名 メールアドレス
Date:   日時

    revertのコミットメッセージ
    
commit バイナリファイルを含めたコミットのコミットハッシュ
Author: ユーザー名 メールアドレス
Date:   日時

    バイナリファイルを含めたコミットのコミットメッセージ
    
commit 関係ないコミットのコミットハッシュ
Author: ユーザー名 メールアドレス
Date:   日時

    関係ないコミットのコミットメッセージ

色々やったのでgit logはこんな感じ↑

git rebase -i HEAD~3

でrebase開始。

pick バイナリファイルを含めたコミットのコミットハッシュ バイナリファイルを含めたコミットのコミットメッセージ
squash revertのコミットハッシュ revertのコミットメッセージ
squash 手動でfileを正しい状態にしたコミットのコミットハッシュ 手動でfileを正しい状態にしたコミットのコミットメッセージ

という風にする。
:wqで保存
次に立ち上がったviでも:wqで保存。

コミットメッセージがおかしいので、

git commit --amend -m "正しいコミットメッセージ"

としてコミット修正。
pushできるようになったので、git push origin mainで完了。

注意点

チーム開発だとデグレが怖いので、rebaseせずブランチ作り直しした方が良いかも。
(pushできていないから、push -fしないので大丈夫か?)
rebaseちゃんと解ってたら大丈夫だと思いますが、
個人的には怖いのでムリしない方が良い派。

理解が薄いところがあったり、
もっとスマートにやれる場所がありますが、
一旦これで個人開発環境には対処可能かと。

参考記事

https://meetup-jp.toast.com/1464

Discussion