25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

githubのmainブランチに初pushするときに出たエラー解決方法

Posted at

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となったときの対処

25
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?