1. ホーム
  2. git

[解決済み] Gitのmasterブランチを、別のブランチから完全に置き換えるには?[重複]。

2022-03-15 21:16:22

質問

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

  1. master
  2. seotweaks (元々は master )

私が作成した seotweaks に素早くマージするつもりである。 master . しかし、それは3ヶ月前のことであり、このブランチのコードは以下のように13バージョン進んでいます。 master .

このブランチは、実質的に作業用の master ブランチとなりました。 master はもう多かれ少なかれ陳腐化しています。

非常に悪い習慣であることは承知していますが、教訓とします。

の内容をすべて置き換える方法をご存知ですか? master ブランチと seotweaks ?

をすべて削除すればいいのですが master とマージしますが、これはベストプラクティスとは思えません。

解決方法は?

このように、"ours" マージ戦略を使って、seotweaksでマスターを上書きすることができるはずです。

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

その結果、あなたのマスターは本質的にseotweaksになったはずです。

( -s ours--strategy=ours )

から ドキュメント ours」戦略について。

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

コメントからの更新です。fatalになったら。 refusing to merge unrelated histories で、2行目を次のように変更します。 merge --allow-unrelated-histories -s ours master