GitHubのエラー解決(error: failed to push some refs to 'https://github.com/ユーザー名/リポジトリ名.git')

はじめてGitHub使ってプッシュをしようとしたら、error: failed to push some refs to 'https://github.com/ユーザー名/リポジトリ名.git'というエラーが出たので、解決した記録を残します。

やりたかったこと

GitHubでリモートリポジトリを作る

ローカルリポジトリを作ってファイルをコミット

リモートリポジトリとローカルリポジトリを繋げる

リモートリポジトリへプッシュ

※以下がGitBashで実行したコード

mkdir github
cd github
mkdir test
cd test

git init

git add index.html
git commit -m"1st commit"

git remote add origin https://github.com/ユーザー名/リモートリポジトリ名.git
git push origin master

躓いたこと

リモートリポジトリのデフォルトのブランチ名がmainであるのに対して、ローカルリポジトリのデフォルトのブランチ名はmasterであるため、ローカルリポジトリをリモートリポジトリへプッシュすると、リモートリポジトリに新しくmasterというブランチが作成されて、そこにロカールリポジトリが反映されてしまいます。
リモートリポジトリのmainに反映させたいんだけどな...と思い、「ロカールリポジトリのデフォルトのブランチの名前をmainにすれば解決だ!」と思い、以下のコードを実行しました。

git config --global init.defaultBranch main

これで、"git push origin main"を実行しようとしたら、以下のエラーが出ました...

原因

上記のエラーは、「リモートの変更内容がローカルにないからプッシュできないよ...」という内容らしいです。 いやいや、リモートリポジトリは新規で作ったから変更とかしてないよなと思ったのですが、最初に追加した"README.md"が原因だと分かりました。

解決策

リモートリポジトリのREADME.mdをローカルリポジトリに反映させることが最終目標です! まずは、リモートリポジトリから最新の変更を取得するGitコマンドであるgit fetchを実行します。

git fetch

git fetchは、リモートのmainブランチの最新情報を、ローカルのorigin/mainブランチに反映させます。 そして、ローカルのorigin/mainブランチからローカルのmainブランチへ最新情報を反映させるためにgit mergeを実行します。

git merge --allow-unrelated-histories origin/main

※マージするときは、ブランチの根本が共通している必要があります。共通していないブランチをマージするときは、"--allow-unrelated-histories"オプションを指定する必要があります。

※mergeすると以下のメッセージが表示されるが以下の手順を操作すれば問題ないです

  1. escボタンを押す
  2. :wqと入力する
  3. Enterボタンを押す

再度、git push origin mainを実行すれば上手くいきます!!!

参考サイト

qiita.com qiita.com qiita.com dev.classmethod.jp codeclub965.com