如何从另一个分支完全替换git中的master分支?
可能重复:
在git中将当前分支更改为master
我在git repo中有两个分支:
我创建seotweaks
与快速合并它放回意向master
,但是这是3个月前,并在此分支的代码是提前13个版本的master
,它实际上已经成了我们的工作主分支中的所有代码master
是多还是现在不太陈旧了。
我知道很不好的做法,经验教训。
你知道我怎样才能将master
分支的所有内容替换为seotweaks
所有内容?
我可以删除master
和merge中的所有内容,但这并不像最佳实践。
你应该能够使用“我们的”合并策略来覆盖像这样的seotweaks的主人:
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks
结果应该是你的主人现在基本上是seotweaks。
( - -s ours
是 - --strategy=ours
简称)
从关于'我们'战略的文件来看:
这可以解析任意数量的头,但合并结果树始终是当前分支头的树,有效地忽略了来自所有其他分支的所有更改。 它是用来取代侧枝的旧发展历史。 请注意,这与递归合并策略的-Xours选项不同。
如何使用git branch -m将主分支重命名为另一个,然后将seotweaks分支重命名为master? 像这样的东西:
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
这可能会删除原始主机中的提交 ,请在运行git push -f origin master
之前检查您的git push -f origin master
。
您可以重命名/删除远程主服务器上的主服务器,但如果很多人在远程主服务器分支上进行工作并将其分支放在其本地回购站中,这会成为问题。
这可能不是这种情况,因为每个人似乎都在研究分支' 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
但是,
reset --hard
他们的本地主人到他们将要获取的远程/主分支,并忘记他们当前的主人。 上一篇: How to replace master branch in git, entirely, from another branch?