Git のマスター ブランチを別のブランチから完全に置き換えるにはどうすればよいでしょうか? [重複] 質問する

Git のマスター ブランチを別のブランチから完全に置き換えるにはどうすればよいでしょうか? [重複] 質問する

私の Git リポジトリには 2 つのブランチがあります。

  1. master
  2. seotweaks(元々は から作成されましたmaster)

seotweaksすぐに にマージするつもりで を作成しましたmaster。しかし、それは 3 か月前のことで、このブランチのコードは より 13 バージョン進んでいますmaster

すべてのコードがmaster多かれ少なかれ時代遅れになっているため、事実上、作業用マスター ブランチになっています。

非常に悪い習慣だとはわかっていますが、教訓を得ました。

masterブランチのコンテンツをすべて のコンテンツに置き換える方法をご存知ですかseotweaks?

すべてを削除してマージすることもできますmasterが、これはベストプラクティスではないようです。

ベストアンサー1

「ours」マージ戦略を使用して、次のように seotweaks でマスターを上書きできるはずです。

git checkout master
git pull
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks

最初の 2 つの手順は、マスターのローカル コピーが最新であることを確認するための便利な予防策です。その結果、マスターは基本的に seotweaks になるはずです。

(-s oursは の略です--strategy=ours)

からドキュメント「私たちの」戦略について:

これにより、任意の数のヘッドが解決されますが、マージの結果のツリーは常に現在のブランチ ヘッドのツリーとなり、他のすべてのブランチからの変更はすべて無視されます。これは、サイド ブランチの古い開発履歴を置き換えるために使用することを目的としています。これは、再帰マージ戦略の -Xours オプションとは異なることに注意してください。

コメントからの更新: fatal: が発生した場合はrefusing to merge unrelated histories、2 行目を次のように変更します。git merge --allow-unrelated-histories -s ours master

おすすめ記事