githubにpushしようとしたらできなかった話
まえがき・経緯
こんにちは、静カニです。この間、gensimのWord2Vecを使ってプログラムを作っていた時に、モデルも追跡対象に入れていました。
それを、Githubにプッシュしようとしたところ、VS Codeでは、 「プッシュできませんでした。git pullで仕様を統合してからプッシュしてください。」的なメッセージが出てきました。
試したこと
単純にプッシュができなかっただけだと思い込んでいたので、調べたときに、git reset --hard origin/masterが出てきました。 ですが、これではせっかくの変更がおじゃんになります。皆さんは注意しましょう。そこで、git push -fと直接コマンドを実行したエラーメッセージを翻訳したところ、「ファイルがでかすぎる」と言っていたことが分かりました。
解決方法
エラーメッセージにはgit-lfsというもののURLがあったため、使ってみると、モデルのサイズが小さくなったため、それでプッシュできる…かと思いました。ですが、一度コミットしたあと、小さくしてものをコミットしたため、前のコミットをプッシュしようとして、失敗してしまいます。
それでは、どうすればよいかというと、先のgit reset ~ のうち、--hardオプションを--softオプションに変えてからコミットしなおすことです。
--softオプションは現在のカレントディレクトリの状態は変えないので、そのままコミットすればよいということです。
結局必要なコマンド
git reset --soft origin/[ブランチ]
git lfs track "[モデルのファイル名]"
git add .
git commit -m "メッセージ"
あとがき
そもそもgithubにバイナリのファイルはアップロードするべきではないという考え方の方もいると思いますので、 これはごく限られた人にしか役に立たないかもしれませんが、自分の備忘録的にこの記事を書きました。2024/08/08追記
git-lfsのインストール方法(自分が使っているWindows向けなので他のOSの場合は自分で調べてください)- git-lfsのホームページを開く
- 画面にあるインストーラをダウンロード・実行する
- ターミナルでgit lfs installを実行する
