Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
60
Help us understand the problem. What is going on with this article?
@mei28

[Git] fatal: refusing to merge unrelated historiesを解決する話

TL;DR

git merge --allow-unrelated-histories origin/masterをする!

※ 2020/12/01追記
2020年10月より, デフォルトブランチがmasterからmainに変更になりました.(https://github.com/github/renaming) なので, 新しく作った方は

git merge --allow-unrelated-histories origin/mainになります!

なにが起きたの?

  1. GitHub上でリポジトリを作り, READMEを作成した.
  2. ローカルでgit initしてリポジトリを作り, git remote add origin <GitHubのリポジトリ>でリモートリポジトリを指定.
  3. ローカルで作業を行い,コミットしプッシュを行おうとした.

プッシュを行おうとしたら, 下のようになった.

To https://github.com/<user>/<repo_name>.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/<user>/<repo_name>.git'
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.

プッシュできなかったので,言われた通りにプル git pull origin main git pull origin masterを行なった.※2020/12/01 追記
すると, 下のようになった.

From https://github.com/<user>/<repo_name>
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

fatal: refusing to merge unrelated historiesと表示されプルできなかった.

解決策

git mergeコマンドに--allow-unrelated-historiesのオプションを使いして実行する.

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

mainブランチがデフォルトのとき

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

するとimage.png

のようにマージが行われ,無事にプッシュ作業が行うことができる!

どうしてこうなった?

通常のマージでは,共通の祖先から分岐したブランチ同士が結合される.しかし,今回の例では,Githubでのコミット,ローカルでのコミットはそれぞれ共通の祖先がない状態から行われてしまっている.このため,マージを行うことができなかった.

しかし--allow-unrelated-historiesオプションをつけると,共通の祖先を持っていないブランチ同士でもマージ作業を行うことができる.

所感

今回起きた問題は, リポジトリ作りたての一番はじめだけしか起こることがない珍しいケースだと思う.

(--orphan オプションをつけてブランチを作成すると,既存ブランチと完全に独立したブランチを作れるため,一応おこりえる?)

参考にしたサイト

60
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mei28
機械学習メインの,ときどきUnity.

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
60
Help us understand the problem. What is going on with this article?