一尘不染

如何从另一个分支完全替换 Git 中的主分支?

javascript

我的 Git 存储库中有两个分支:

  1. master
  2. seotweaks(最初创建自master

我创建seotweaks的目的是快速将其合并回master. 然而,那是三个月前的事了,这个分支中的代码比master.

它实际上已成为我们的工作主分支,因为其中的所有代码master现在或多或少已经过时了。

我知道的非常糟糕的做法,吸取了教训。

你知道我如何用 中的内容替换master分支的所有内容seotweaks吗?

我可以删除所有内容master并合并,但这并不是最佳实践。


阅读 382

收藏
2022-02-14

共1个答案

一尘不染

您应该能够使用“我们的”合并策略用 seotweaks 覆盖 master,如下所示:

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

结果应该是你的主人现在基本上是 seotweaks。

-s ours简称--strategy=ours

从有关“我们的”策略的文档中:

这解决了任意数量的头,但合并的结果树始终是当前分支头的树,有效地忽略了所有其他分支的所有更改。它旨在用于取代分支的旧开发历史。请注意,这与递归合并策略的 -Xours 选项不同。

从评论更新:如果你得到致命的:refusing to merge unrelated histories,然后将第二行更改为:gitmerge --allow-unrelated-histories -s ours master

2022-02-14