経緯
アプリケーション作成のためGithubにリモートリポジトリを作成し、ローカルのブランチ名をmaster
にしてpushしました。Githubを確認するとプルリクの表示が出ていたので疑問に思って確認すると、Githubで作成されたデフォルトブランチがmain
になっていたことに気が付きました。調べてみると2020年の10月からGithubにて作成されるデフォルトブランチがmain
になっていることが分かりました。
今回、私と同じようにローカルブランチをmaster
にしてpushし、プルリクの表示が出て以降進めず、どう対処すればよいか分からない方がいると思い記事を書こうと思いました
※記事にしようと思ったときにはマージまで終了してしまったので画像は少ないです!
※10月からリポジトリのデフォルトブランチ名がmain
になるという情報は以下を参考にしています。
https://github.blog/changelog/2020-10-01-the-default-branch-for-newly-created-repositories-is-now-main/
#原因
リモートリポジトリ作成時、デフォルトブランチがmain
になっていることを確認せずにローカルブランチをmaster
のままpushしてしまったこと。
#実際に発生したこと
いつものようにpushまでしました。
$ git init
$ git add .
$ git commit -m "XXXXXXX"
$ git remote add origin https://github.com/YYYYYYY/test.git
$ git push origin master
ここでGithubを更新すると、Compare & pull request
が表示されます。
通常であれば、Compare & pull request
を押すと以下が表示されますが・・・
今回は表示されませんでした。
今回の場合、Conpare & pull request
押すと以下が表示されました。
There isn’t anything to compare. main and master are entirely different commit histories.
「mainとmasterは全く異なるコミットを持つので比較できません」という意味ですね。
関連性を構築できればうまくいくかもしれません。
#解決策
##mainとmasterを関連づける
$ git branch --set-upstream-to origin/master main
master = (ローカルリポジトリのブランチ)
main = (リモートリポジトリのブランチ)
これでmainとmasterの関連性を構築できました。
あとは以下を行います。
$ git checkout master
$ git pull
$ git checkout main
$ git pull
$ git merge master
$ git push origin main
#補足
上記を行った際に以下が発生するかもしれません。
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/maruuchi/health_care6.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
その際は以下の方法で対処しました。
$ git push -f origin main
これは強制的にpushを行うことです。あまり良い方法ではないかもしれませんが...
#追記
新たなアプリケーションを作成するため新しくリモートリポジトリを作成し、ブランチ名をmain
にしてローカルリポジトリのブランチ名をmaster
にしてpushしたところエラーは発生せず、通常通りpushできました。原因は不明です。