タイトル画像

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の場合は自分で調べてください)
  1. git-lfsのホームページを開く
  2. 画面にあるインストーラをダウンロード・実行する
  3. ターミナルでgit lfs installを実行する