可能重复:使当前Git分支成为主分支
我的Git存储库中有两个分支:
-
master
-
seotweaks
(最初由master
创建)
我创建了 seotweaks
,目的是将其快速合并回 master
. 然而,那是三个月前,这个分支中的代码是 master
之前的13个版本 .
它已经有效地成为我们的工作主分支,因为 master
中的所有代码现在或多或少都已过时 .
我知道非常糟糕的做法,经验教训 .
你知道如何用 seotweaks
中的那些替换 master
分支的所有内容吗?
我可以删除 master
中的所有内容并合并,但这不是最佳实践 .
5 回答
您应该能够使用“我们的”合并策略用seotweaks覆盖master,如下所示:
结果应该是你的主人现在基本上是seotweaks .
(
-s ours
是--strategy=ours
的缩写)从the docs关于'ours'策略:
那么使用git branch -m将master分支重命名为另一个分支,然后将seotweaks分支重命名为master?像这样的东西:
This might remove commits in origin master ,请在运行
git push -f origin master
之前检查您的原始主数据 .您可以在远程重命名/删除master,但如果很多人将他们的工作 Build 在远程主分支上并且已将该分支拉到本地仓库中,则这将是一个问题 .
这可能不是这里的情况,因为每个人似乎都在分支'
seotweaks
'上工作 .在这种情况下,你可以:
git remote - 显示可能无法正常工作 . (制作git remote show以检查您的遥控器在本地仓库中的声明方式 . 我将假设'
origin
')(关于GitHub,house9评论:“我必须再做一个步骤,点击'
Admin
' button on GitHub and set the 'Default Branch
' to something other than 'master
',然后再把它放回去”)但是又一次:
如果其他用户尝试在远程删除master时拉动,则其拉动将失败("no such ref on remote")
当在远程上重新创建master时,pull将尝试在其本地(现在是旧的)master上合并该新master:许多冲突 . 他们实际上需要
reset --hard
他们的本地主人到他们将要获取的远程/主分支,并忘记他们当前的主人 .由于
seotweaks
最初是作为master
的分支创建的,因此将其合并回来是一个好主意 . 但是,如果您的某个分支机构实际上不是master
的分支机构,或者您的历史记录是如此不同以至于您只是想要删除master
分支以支持您一直在为您工作的新分支机构可以做到这一点:如果您收到此错误,这将特别有用:
并且您没有使用GitHub并且无法访问“管理”选项卡来更改远程存储库的默认分支 . 此外,这不会导致因删除master而遇到的停机时间或竞争条件:
我发现这是最好的方法(我的服务器有问题不让我删除) .
在承载
origin
存储库的服务器上,从存储库内的目录中键入以下内容:在您的工作站上:
回到托管
origin
存储库的服务器上:感谢博客文章http://www.mslinn.com/blog/?p=772的作者