BLMの影響により、masterが奴隷制度を連想させるということで、githubではデフォルトのブランチ名がmasterからmainに変更となったそうです。これにより、個人プロジェクトをgithubへ上げる時に支障が出たので、解決方法を書きます。
##[事前準備] gitのデフォルトブランチ名をmainにする
ローカル開発環境でgitのデフォルトブランチ名をmasterからmainに変更します。
##ローカルリポジトリをgithubに上げる
今回は、通常の手順で個人のプロジェクトをgithubに上げます。
(事前にgithubでリポジトリを作ってあります。)
$ git init
$ git remote add origin リポジトリのURL
$ git commit -m'first'
git push origin main
ここで、エラーが発生します
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'github.com:リポジトリ名'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
リモートリポジトリで変更した内容がローカルに反映されていないことが原因のようです。まず、リモートブランチを追跡ブランチに反映させるためにfetchを実行する。
$ git fetch
追跡ブランチをローカルブランチに反映させるためにmergeを実行する。
$ git merge origin/main
また、エラーが発生
fatal: refusing to merge unrelated histories
調べてみると、mainブランチのヒストリーが紐づいていないようです。。そのため、上記をmergeするには-allow-unrelated-historiesという、関連のないリポジトリの内容をマージするためのオプションが必要らしいので、オプションを付けてmergeを実行。
git merge --allow-unrelated-histories origin/main
またまたエラーが発生
CONFLICT (add/add): Merge conflict in README.md
Auto-merging README.md
Automatic merge failed; fix conflicts and then commit the result.
README.mdファイルでコンフリクトを起こしています。
git statusで状況を確認すると原因が出てきました。
On branch main
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: README.md
no changes added to commit (use "git add" and/or "git commit -a")
README.mdのファイルがコンフリクトを起こしているのでaddしろと出てきました。
(自分の場合、リモートリポジトリではREADMEファイルのみ作成していたので、ローカルとコンフリクトしてしまったようです。)
言われた通りaddを実行
$ git add README.md
commitを実行
$ git commit -m'second commit'
pushを実行
$ git push origin main
問題なくpushできました!
###参考記事
Gitのデフォルト・ブランチ名を変更する方法
GitHubへのpushが「fetch first」と表示されてrejectedとなったときの対処