私の Git リポジトリには 2 つのブランチがあります。
master
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