可能重复:
使当前的 Git 分支成为主分支
我的 Git 存储库中有两个分支:
master
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
简称)
从关于 “我们的” 战略的文档 :
这会解析任意数量的头,但合并的结果树始终是当前分支头的树,实际上忽略了所有其他分支的所有更改。它旨在用于取代侧枝的旧发展历史。请注意,这与递归合并策略的 - Xours 选项不同。
那么使用 git branch -m 将 master 分支重命名为另一个分支,然后将 seotweaks 分支重命名为 master?像这样的东西:
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
这可能会删除 origin master 中的提交 ,请在运行git push -f origin master
之前检查你的git push -f origin master
。
您可以在远程重命名 / 删除 master,但如果很多人将他们的工作建立在远程主分支上并在本地仓库中拉出该分支,这将是一个问题。
这可能不是这里的情况,因为每个人似乎都在分支 ' seotweaks
'。
在这种情况下,你可以:
git remote - 显示可能无法正常工作。 (制作一个git remote show
来检查你的本地仓库中你的遥控器的声明方式。我会假设 ' 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
但是又一次:
reset --hard
他们的本地主人员reset --hard
到他们将要获取的远程 / 主分支,并忘记他们当前的主人。