事象
git pull後に以下コマンドでgit fetchでリモートリポジトリの情報取得に行くも
$ git fetch --recurse-submodules=yes --depth=1 origin --force master
以下のエラーとなる。
fatal: couldn't find remote ref master
環境情報
$ git --version git version 2.30.0
原因/解決策
存在しないブランチに対してfetchコマンドをしかけている。
以下コマンドでリポジトリのブランチ名を確認し
$ git branch -a * master remotes/origin/HEAD -> origin/main remotes/origin/br-latest-app remotes/origin/main
正しいリポジトリ名でfetchすると
$ git fetch --recurse-submodules=yes --depth=1 origin --update-head-ok --force main remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 From https://github.com/xx/xx * branch main -> FETCH_HEAD
正しい情報が取得できる。
以下、補足です。
補足
git fetchとは「Download objects and refs from another repository」という名の通りで指定したブランチから最新情報を持ってくる処理ですが、ブランチ名が誤っている場合はエラーメッセージの「ref xx」として確認できます。
よってfetchが失敗する場合はそもそもリモートリポジトリが正しいのかをgit remoteで確認した後
$ git remote -v origin https://github.com/xx/xx (fetch) origin https://github.com/xx/xx (push)
git branchでブランチ名を確認するとエラーの原因究明につながるケースがあります。
以上、エラー解消の参考になれば幸いです。