我在Git中有一个存储库。我做了一个分支,然后对主分支和分支都做了一些更改。

然后,几十次提交之后,我意识到分支的状态比主分支好得多,所以我希望分支“成为”主分支,并忽略对主分支的更改。

我无法合并它,因为我不想将更改保留在master上。我该怎么办?

额外:在本例中,“旧”主控已被推送到另一个存储库,如GitHub。这是如何改变事情的?


当前回答

通过以下方式将分支重命名为主分支:

git branch -M branch_name master

其他回答

编辑:你没说你已经推到了公开回购!这是天壤之别。

有两种方式,“脏”的方式和“干净”的方式。假设您的分支名为new master。这是一种干净的方式:

git checkout new-master
git branch -m master old-master
git branch -m new-master master
# And don't do this part.  Just don't.  But if you want to...
# git branch -d --force old-master

这将使配置文件更改以匹配重命名的分支。

你也可以用脏的方式来做,这不会更新配置文件。这是在上面的罩下发生的事情。。。

mv -i .git/refs/new-master .git/refs/master
git checkout master

通过以下方式将分支重命名为主分支:

git branch -M branch_name master

只需访问gitlab或github网站,查找设置即可。

然后在设置下查找存储库。

在那里找到默认分支,展开它,您可以获得重命名它或将其更改为其他分支的选项。

我在gitlab尝试过,结果成功了。

我在博客文章中找到了我想要的答案。用git中的另一个分支替换主分支:

git checkout feature_branch
git merge -s ours --no-commit master
git commit      # Add a message regarding the replacement that you just did
git checkout master
git merge feature_branch

这与卡斯卡贝尔的答案基本相同。除了他们的解决方案下面的“选项”已经嵌入到上面的代码块中。

这样更容易找到。

我将此添加为新答案,因为如果以后需要此解决方案,我希望在一个代码块中包含所有需要使用的代码。

否则,我可能会复制并粘贴,然后阅读下面的详细信息,以查看我应该更改的行-在我已经执行它之后。

如果您在Eclipse中使用eGit:

在项目节点上单击鼠标右键。选择团队→ 然后是高级→ 然后重命名分支然后展开远程跟踪文件夹。选择名称错误的分支,然后单击重命名按钮,将其重命名为任何新名称。选择新的主控形状,然后将其重命名为主控形状。