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すると以下のメッセージが表示されるが以下の手順を操作すれば問題ないです
esc
ボタンを押す:wq
と入力するEnter
ボタンを押す
再度、git push origin mainを実行すれば上手くいきます!!!
参考サイト
qiita.com qiita.com qiita.com dev.classmethod.jp codeclub965.com