可能的重复:
使当前的Git分支成为主分支
我的 Git 仓库里有两个分支。
1.master
。
2.seotweaks
(最初从master
创建)。
我创建 "seotweaks "的目的是为了迅速将其合并到 "master "中。然而,那是三个月前的事了,这个分支的代码比master
领先13个版本。
它实际上已经成为我们的工作主干分支,因为master
中的所有代码现在或多或少都已经过时了。
我知道这是很糟糕的做法,吸取了教训。
你知道我如何用 "seotweaks "中的内容替换 "master "分支中的所有内容吗?
我可以直接删除master
中的所有内容,然后合并,但这不像是最佳做法。
你应该能够使用"我们的"合并策略,用这样的seotweaks覆盖master。
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks
结果应该是你的母版现在基本上是seotweaks。
("s ours "是"--strategy=ours "的简称)
来自文档关于'ours'策略。
这可以解决任何数量的头,但合并后的树总是当前分支的头,有效地忽略了所有其他分支的变化。它是用来取代侧边分支的旧开发历史的。注意,这与递归合并策略的-Xours选项不同。
评论中的更新。如果你得到致命的:"拒绝合并不相关的历史",那么把第二行改为:git merge --allow-unrelated-histories -s ours master
。
用git branch -m把主干分支改名为另一个分支,然后把seotweaks分支改名为主干分支,怎么样? 就像这样。
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
这可能会删除origin master中的提交,请在运行`git push -f origin master'之前检查你的origin master。
你可以在远程重命名/删除主干,但如果很多人在远程主干分支的基础上工作,并将该分支拉到本地 repo 中,这将是一个问题。
这里可能不是这种情况,因为大家似乎都在分支'seotweaks
'上工作。
在这种情况下,你可以。
git remote --show 可能不起作用。
(做一个git remote show
来检查你的远程在你的本地 repo 中是如何声明的。我将假设'origin
')
(关于GitHub,house9评论说:"我不得不多做一步,点击GitHub上的'Admin
'按钮,将'Default Branch
'设置为'master
'以外的东西,之后再放回去")
git branch -m master master-old # rename master on local
git push origin :master # delete master on remote
git push origin master-old # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master # create master on remote
但还是那句话。