症状
リモートリポジトリに最初にPushするときに発生したエラー
$ git push origin main
error: src refspec main does not match any
error: failed to push some refs to 'リポジトリURL'
環境
Paperspace gradient
git version 2.25.1
やったこと 1
GitHubの方でリポジトリを作ったときにREADME.mdを作成していたのでローカルにpullする。
$ git pull origin main
warning: no common commits
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 656 bytes | 43.00 KiB/s, done.
From リポジトリURL
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
fatal: refusing to merge unrelated histories
このエラーは根本が異なるブランチをpullまたはmergeしようとしたときに起こるらしい。今回の場合、ローカルリポジトリでcommitしていたのが原因と考えた。
調べた結果--allow-unrelated-histories
オプションをつけて強制的にpullした後改めてpushしたがエラーに変化なし。
やったこと 2
logを確認する。
$ git log
commit 7632c0297a181a0f3e278c411ff501acb9ccce51 (HEAD -> master)
Merge: 2056fec 667b7dc
Author: *******************************
Date: Wed May 3 11:56:39 2023 +0000
Merge branch 'main' of リポジトリURL
commit 2056fec0bd32eb7bc9cbfc24fd334a3012764b9d
Author: *******************************
Date: Wed May 3 10:46:03 2023 +0000
feat: Add Notebook files
commit 667b7dca165ca58bf3f828d0e8f8b265c77d4f48 (origin/main)
Author: *******************************
Date: Wed May 3 19:16:23 2023 +0900
Initial commit
ローカルのmaster
にマージされていると読み取れた(正しいか自信なし)。リモートのブランチ名はmain
なのでローカルのブランチ名をmaster -> main
に変える。
$ git branch -m master main
をした後にもう一度pushでリモートにpushできた。
原因と対応
- リモートリとローカルのcommitに差があったこと -> 最初に
git pull
する。 - リモートリとローカルのbrabch名が違ったままpushしたこと -> 'git branch -m 対象ブランチ名 変更後ブランチ名'で対応する。
Git 2.28以前ではgit init
したときに作成されるブランチ名はデフォルトでmaster
になるらしい。
参考サイト