git submodule updateしたらreference is not a treeが出た時のメモ

git submodule update 時にこんなエラーが出ました。

-> % git submodule update
fatal: reference is not a tree: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Unable to checkout 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' in submodule path 'submodule/path'

いくつかのサイトで解決策が書かれていましたが、だいたい


$ cd submodule/path
$ git reset --hard
$ cd ../
$ git commit -a
$ git push


みたいな感じで書かれていますね。

(参考:git submodule update時にfatal: reference is not a treeエラーが発生する

 

僕もそうしたかったのですが、諸事情によりpushできない状況でした。

どうすれば良いかよく分からなかったのですが、
  • .gitmodules
  • .git/config
  • submodule/path/.git/config
の3つで対象のリポジトリの設定を見たところ、URLが一個だけ異なっていました。

設定を変えたときに漏れがあったみたいです。

 

これを直してからgit submodule update したら見事成功。

同じような状況になってしまった人は一度確認してみると良いかもしれません。