重命名远程 git 分支

47

我有两个git分支:master和experimental。

Experimental变得很好,我想将它作为主分支。我想改名以重新排列,但是这就是我得到的:

nutebook:Stuff nathan$ git remote rename master old
error: Could not rename config section 'remote.master' to 'remote.old'

我使用 GitHub 和 Git-Tower。

5个回答

66

以下是重命名主分支的指南,同样适用于重命名实验性分支。

以下是我的重命名步骤。

首先,在您的工作树中,将主分支本地重命名为其他名称。

git branch -m master old-dev

如果您当前在分支上,重命名分支是可行的,因此不需要切换到其他分支。

然后,将本地维护分支(2.63-branch)重命名为 master:

git branch -m 2.63-branch master

现在是时候操作远程仓库了。为了防止出错,你可能需要确保有一个最新的备份。首先,删除远程仓库的主分支:

git push origin :master

现在,把你的新主人给遥控器:

git push origin master:refs/heads/master
更新: 创建新分支时,远程侧需要使用refs/heads/前缀。如果分支已经存在(如上面的主分支),则在远程侧只需要提供分支名称。 ...和你现在改名的旧主分支:
git push origin old-dev:refs/heads/old-dev

最后,删除您维护分支的旧名称,以防混淆:

git push origin :2.63-branch

当客户端进行拉取操作时,他们将获取到“新”的主分支。

参见网站。


7
此外,当我想要在 GitHub 上重命名我的“主分支”时,我首先需要在“设置”下更改默认分支,然后才能删除它(即 git push origin :master)。 - dave mankoff
你能否在本地重命名分支并将其推送到远程,然后删除旧的分支? - Robert Beltran
1
我认为使用“-u”标志进行推送很好,因为它为您设置了新远程的上游跟踪,例如git push -u origin master(在使用Git 1.7时,我不需要完整的refs/heads前缀)。 - Tom Saleeba

4

我认为最简单的方法是检出实验分支,删除远程主分支,然后将本地实验分支推送为新的远程主分支。

// delete the remote master branch by pushing null
// (the space in front of the semicolon) in this branch
git push origin :master
// push local experimental to remote master
git push origin experimental:master

1

1

master 是一个分支,不像 origin 一样是一个远程仓库。如果你想将你的实验性工作合并到你的 master 分支中,只需简单地进行合并操作:

git checkout master
git merge experimental

这可能会产生不想要的结果:如果experimental没有被rebase到当前的master分支,那么master上可能有一些OP想要摆脱的东西。 - Lutz Prechelt

0
你尝试的是将远程仓库从“master”重命名为“old”。要重命名另一个仓库中的分支,只需删除它即可。
git push <remote> :<branch name>

然后将其推送为其他内容。


这将删除远程已删除分支的提交历史记录。在许多具有强大SDLC的情况下,这是可以接受的。运维问题表明他们有两个不稳定/开发分支不能合并(据说),其中一个有一个特殊名称“master”。最流行的答案保留旧和新主分支的提交历史记录完整。 - Tenacious

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接