先日,作業中に容量の大きなファイルを,git pushしてしまいエラーに悩まされたので,そのときの対処法を残しておきます.
何が起こったのか
一通り,作業を終えてリモートリポジトリに反映させたところ,100MBを超えるファイルはGitHubにあげられないよと,怒られました.
1 2 3 | $git add -A $git commit -m 'comments' $git push -u origin master |
表示されたエラーコードの一部が,以下です.
1 | this exceeds GitHub's filesize limit of 100.00 MB |
対処①
該当のファイルは,リモートリポジトリに置く必要がなかったので,管理対象から除外することにしました.
1 2 | $git rm --cached ./abcd/efg/hij.txt $vim .gitignore |
.gitignoreに該当ファイルを追記して一件落着と思いきや,git pushするとまたも同じエラーが出ました.
対処②
それもそのはず,リポジトリの管理対象から消えたとしても,一度commit した以上,履歴には残っているのです.
該当ファイルを履歴から抹消するには,少し面倒な操作が必要です.
1 2 3 | $git filter-branch --force --index-filter \ $'git rm --cached --ignore-unmatch ./abcd/efg/hij.txt' \ $--prune-empty --tag-name-filter cat -- --all |
再び,pushしてみると,またエラーが出ました.
1 2 3 4 5 6 7 | Tohttps://github.com/yamadataro/sample ![rejected] master->master(non-fast-forward) error:failedtopushsomerefsto'https://github.com/yamadataro/sample' hint:Updateswererejectedbecausethetipofyourcurrentbranchisbehind hint:itsremotecounterpart.Mergetheremotechanges(e.g.'git pull') hint:beforepushingagain. hint:Seethe'Note about fast-forwards'in'git push --help'fordetails. |
対処③
1 2 3 4 5 6 | $git status # On branch master # Your branch is ahead of 'origin/master' by 3 commits. # (use "git push" to publish your local commits) # nothingtocommit,workingdirectoryclean |
確認すると,いろいろやってるうちに3回もcommitしてしまったことが原因のようです.
今は,ローカルの状態をそのままリモートリポジトリに反映させれば良い状況になっているので,強制的にpushすることで解決しました.
1 | $git push -f origin master |
以上.お試しの際は充分注意して実行してくださいね!
My favorite food is Sushi and Yakiniku.
コメント