サーバー側でサブモジュールのコミットを取り込もうとして、git submodule update
をかけたところ以下のエラーが発生しました。
fatal: remote error: upload-pack: not our ref {hash}
Fetched in submodule path '{submodulePath}', but it did not contain {hash}. Direct fetching of that commit failed.
どうやら指定された hash のコミットを submodule は持っていないよと言われているようです。
原因と解決策
自分の場合は単純な理由で、ローカルで修正したサブモジュールのコミットを、リモートに push していないだけでした。
git submodule update
は、サブモジュールに指定されたコミットハッシュ値をもとにして、 特定のコミットにチェックアウトすることができます。
今回は「メインリポジトリのサブモジュールハッシュ値はローカルには存在するけど、リモートには存在していないという状態」になりチェックアウトできずにいました。当然ですね…。
そのため、サブモジュールの修正をリモートに push して、再度アップデートをかけて成功しました。