如何重命名Git本地和远程分支名称?

时间:2015-06-02 07:36:31

标签: git repository rename git-branch

我有四个像master一样的分支 - > origin / regacy,FeatureA - >产地/ FeatureA。如您所见,我键入了错误的名称。

所以我想重命名一个远程分支名称(origin / regacy→origin / legacy或origin / master)

我尝试以下命令:

git remote rename regacy legacy

但是Git控制台向我返回了一条错误消息。

 error : Could not rename config section 'remote.regacy' to 'remote.legacy'

我该如何解决这个问题?

12 个答案:

答案 0 :(得分:508)

Enter image description here

您无法直接重命名远程分支。 您必须将其删除然后重新推送它。

重命名分支

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

# Delete the old branch on remote - where <remote> is, for example, origin
git push <remote> --delete old_name

# Push the new branch to remote
git push <remote> new_name

# Reset the upstream branch for the new_name local branch
git push <remote> -u new-name

Enter image description here

重要提示:

当您使用git branch -m(移动)时,Git也会使用新名称更新您的跟踪分支。

  

git remote rename legacy legacy

git remote rename正在尝试更新配置文件中的远程部分。它会将具有给定名称的远程重命名为新名称,但在您的情况下,它没有找到任何名称,因此重命名失败。

它不会按你的想法行事;它会重命名本地配置远程名称,远程分支。

注意 Git服务器可能允许您使用Web界面或外部程序(如Sourcetree等)重命名Git分支,但您必须记住,在Git中所有工作都是在本地完成的,因此建议使用上述命令工作。

答案 1 :(得分:75)

如果您错误地命名了分支并将其推送到远程存储库,请按照以下步骤重命名该分支(based on this article):

  1. 重命名您当地的分支机构:

    • 如果您在分支机构上,则要重命名:
      git branch -m new-name

    • 如果您在不同的分支机构:
      git branch -m old-name new-name

  2. 删除old-name远程分支并推送new-name本地分支
    git push origin :old-name new-name

  3. 重置新名称本地分支的上游分支
    切换到分支然后:
    git push origin -u new-name

答案 2 :(得分:25)

似乎有一种直接的方式:

  

如果你真的只想远程重命名分支(不同时重命名任何本地分支),你可以使用一个命令来完成这项工作,如

     

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

     

Renaming branches remotely in Git

有关详细信息,请参阅原始答案。

答案 3 :(得分:11)

  • 重命名您的本地分支机构

如果您要在分支上重命名:

git branch -m new-name

如果您当前在其他分支上:

git branch -m old-name new-name
  • 删除旧名称的远程分支并推送新名称的本地分支。

留在目标分支,然后:

git push origin :old-name new-name
  • 为新名称的本地分支重置上游分支。

切换到目标分支,然后:

git push origin -u new-name

答案 4 :(得分:8)

也可以通过以下方式完成。

首先重命名本地分支,然后重命名远程分支。

重命名本地分支:

如果登录到另一个分支,

git branch -m old_branch new_branch 

如果登录到同一分支,

git branch -m new_branch

重命名远程分支:

git push origin :old_branch    // Delete the remote branch

git push --set-upstream origin new_branch   // Create a new remote branch

答案 5 :(得分:8)

附加简单的代码段以重命名当前分支(本地和原始分支):

git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
git docs中的

说明

git branch -m 或-M选项将重命名为 。如果有对应的reflog,则将其重命名 匹配,并且创建了reflog条目以记住 分支重命名。如果存在,则必须使用-M强制 重命名发生。

特殊参考规范:(或+:允许非快速更新) 指示Git推动“匹配”分支:存在的每个分支 在本地,如果分支相同,则更新远程 名称已经在远端。

-设置上游 设置的跟踪信息,因此被视为的上游分支。如果未指定,则默认为当前分支。

答案 6 :(得分:8)

如果您已经将错误的名称推送到远程,请执行以下操作:

  1. 切换到要重命名的本地分支

    git checkout <old_name>

  2. 重命名本地分支

    git branch -m <new_name>

  3. 按下<new_name>本地分支并重置上游分支

    git push origin -u <new_name>

  4. 删除<old_name>远程分支

    git push origin --delete <old_name>

这是基于this article的。

答案 7 :(得分:0)

没有直接的方法,

  1. 重命名本地分支

    我目前的分支是

    my($wtr, $rdr, $err); use Symbol 'gensym'; $err = gensym; $pid = open3($wtr, $rdr, $err, 'some cmd and args', 'optarg', ...); waitpid( $pid, 0 ); my $child_exit_status = $? >> 8; #master_renamed是主人的新名称

  2. 删除远程分支

    git branch -m master_renamed #origin是remote_name

  3. 将重命名的分支推送到远程

    git push origin --delete master

  4. 就是这样......

答案 8 :(得分:0)

即使不通过三个简单的步骤即可重命名本地分支,也可以完成此操作:

  1. 转到GitHub中的存储库
  2. 从您要重命名的旧分支创建新分支
  3. 删除旧分支

答案 9 :(得分:0)

我使用这些git别名,并且几乎可以自动完成工作:

git config --global alias.move '!git checkout master; git branch -m $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'
  

用法:git move从FROM_BRANCH到TO_BRANCH

如果您具有默认名称(例如master,origin等),则可以使用。 您可以根据需要进行修改,但这可以为您带来灵感。

答案 10 :(得分:0)

我必须执行以下任务来重命名本地和远程分支:

# Rename the local branch to the new name
git branch -m <old_name> <new_name>

#  Delete the old remote branch
git push origin --delete <old_name>

# push to new remote branch - creates new remote branch
git push origin <new_name>

# set new remote branch as default remote branch for local branch
git branch --set-upstream-to=origin/<new_name> <new_name>

答案 11 :(得分:0)

  1. 重命名您的本地分支。 如果您在分支机构上,则要重命名:

    git branch -m新名称

如果您在其他分支机构上:

git branch -m old-name new-name
  1. 删除旧名称的远程分支,然后推送新名称的本地分支。

    git push origin:old-name new-name

  2. 为新名称的本地分支重置上游分支。 切换到分支,然后:

    git push origin -u新名称

所有设置!