2011-08-16 107 views
35

我有2个git分支:master和experimental。重命名远程git分支

实验变得很好,我想让它成为主人。我想我会重命名洗牌的东西,但这里是我得到的:

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

我使用GitHub和Git-Tower。

回答

56

以下是重命名您的主分支的指南。它可以轻松地重命名实验分支。

以下是我进行重命名的方法。

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

git branch -m master old-dev 

重命名一个分支做的工作,而你的分支,所以 没有必要签别的东西。

然后,在本地维护分支(2.63分支)重命名为 主:

git branch -m 2.63-branch master 

现在,时间与远程混乱。万一你搞砸了,你可能想要确保你有最新的备份。首先,删除 远程的主人:

git push origin :master 

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

git push origin master:refs/heads/master 

更新:当创建一个新的分支,裁判/头/前缀是 需要上遥远的一面。如果分支已经存在(如上面的主机做 ),只需要远程端的分支名称。

...和你现在更名为老师傅:

git push origin old-dev:refs/heads/old-dev 

最后,删除维护分支的旧名,以避免混乱 :

git push origin :2.63-branch 

客户现在将获得“新的'主分支时,他们拉。

请参阅this网站。

+7

要添加到这一点:当我想重新命名我的“高手”在github上,我首先要改变下的“设置”默认分支之前,它将让我删除它(即'混帐推产地:master'的)。 –

+0

你能只在本地重命名分支,并将它推到远程,然后删除旧的? –

+1

我觉得-u标志来推动是好的,因为它设置的新的远程为你,例如上游追踪'git push -u origin master'(使用git 1.7我不需要完整的refs/head前缀) –

1

master是一个分支,而不是像origin这样的远程是。如果你希望你的试点工作,你的主分支,只需将其合并在:

git checkout master 
git merge experimental 
0

你试图做的是从“大师”重命名远程回购,以“老”。要重新命名另一个回购中的分支,只需将其删除即可

git push <remote> :<branch name> 

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

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