🦔
【GitHub】this exceeds GitHub's file size limit of 100.00 MB でpushできない
やった事
やってしまった事
ずっと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ちゃんと解ってたら大丈夫だと思いますが、
個人的には怖いのでムリしない方が良い派。
理解が薄いところがあったり、
もっとスマートにやれる場所がありますが、
一旦これで個人開発環境には対処可能かと。
参考記事
Discussion