2017-04-06 4 views
0

私はリポジトリにmasterとdevelの2つのブランチを持っています。私はdevelをマスターにマージしようとしましたが、エラーfatal: refusing to merge unrelated historiesがあります。マスターブランチを無関係の履歴に置き換えてください。

githubでは、masterブランチには気にしない、マージする必要のないファイルがいくつか含まれています。私はマスターブランチの歴史を維持する必要はありません、私は単にマスターをdevelに置き換えたいと思っています。

デベロッパーがマスターに更新されると、マスターの元のローカルコピーにマージせずにマスターを引き出す方法をパートナーに伝える必要があります。

私はthisポストやランニングからのアドバイスを使用しているやって検討しています何を:

git branch -m master old-master 
git branch -m devel master 
git push -f origin master 
git branch -d old-master 

あなたは、これが動作すると思いますか?これが完了したら、私はマスターに最新のコピーを手に入れるためにパートナーに何を伝えるべきですか?

答えて

1

あなたがここにかなり厄介な状況になりました。あなたのブランチ入替を想定し
は、彼は彼が何の彼の側をコミットしないしたいの変更がある場合は、あなたのパートナーに依頼する必要がうまくいきました。

  • 彼の側には何の変更は私が新鮮から始まるリモートリポジトリと をクローニングお勧めしないだろう場合。
  • あなたのパートナーは、私は変更を選ぶロケール枝と桜のコピーを作成することをお勧め変更を持っている場合。

パートナー:

git checkout –b master_tmp master 
git checkout master_tmp 
git branch –D master 
git fecth 
git checkout master 
#Locate the changes you are missing 
git log master_tmp 
git cherry pick sha1x…sha1y # look at the documentation of cherry pick. 
#Resolve conflicts as usual 
git commit 
git push 
+0

分岐交換がうまくいきました。私のパートナーは彼の側からのコミットはありません。彼がgit fetchをしていて何が間違っていたら、git reset --hard origin/master? – Casey

+0

あなたはそれを試すことができますが、なぜそれを安全にプレイし、後で予想外のブードゥーを避けてください。あなたはクローンを作成したくない場合は、あなただけの-Dとチェックアウトでマスターを削除することができます。 –

+0

ので、実行のgitブランチ-Dマスタは、その後、Gitは、Gitチェックアウトのマスターを取得しますか? – Casey

1

行動はgitの2.9以降に変更されたデフォルト:既存 プロジェクトのブランドの新しい歴史につながっデフォルトで共通 ベースを持っていない二つのブランチをマージできるようにするために使用

「gitのマージ」、予期せぬ保守担当者 によって作成された後、不要な並列履歴が既存の プロジェクトにマージされました。コマンドは 独立して自分 生活を開始した二つのプロジェクトの履歴をマージするまれなイベントで使用するエスケープハッチ--allow-無関係-履歴オプションで、デフォルト、 ことで、これを許可しないように教えられてきました。

詳細については、git release changelogを参照してください。

--allow-unrelated-historiesを使用すると、強制的にマージが実行されます。

例:git pull origin branchname --allow-unrelated-histories

関連する問題