如何重命名远程git分支名称

我有4个braches,像master – > origin / regacy,featureA – > origin / FeatureA。

正如你在上面看到的,我input了一个错误的名字。

所以我想重命名一个远程分支的名字(origin / regacy => origin / legacy或origin / master)

我尝试下面的命令。

git远程重命名regacy遗产

但是,git控制台向我反映了错误消息。

错误:无法重命名configuration节'remote.regacy'为'remote.legacy'

我怎么解决这个问题?

您不能直接重命名远程分支。 你必须删除它,然后重新推它。

就像是 :

#rename the local branch to the new name git branch -m old_name new_name #delete the old branch on remote - where <remote> is eg. origin git push <remote> --delete old_name #push the new branch to remote git push <remote> new_name 

重要的提示 :

当你使用git branch -m (移动)时,git也在用你的新名字更新你的跟踪分支。

git remote rename regacy legacy

git remote rename是试图更新您的configuration文件中的远程部分。 它将使用给定名称将远程名称重新命名为新名称,但在您的情况下,它找不到任何名称,因此重命名失败。

它不会做你的想法,它会重命名您的本地configuration远程名称,而不是远程分支。

如果您错误地命名了分支并将其推送到远程存储库,请按照以下步骤重新命名该分支( 基于本文 ):

  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

看来有一个直接的办法:

如果你真的只想远程重命名分支(不同时重命名任何本地分支),你可以用一个单一的命令

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

https://stackoverflow.com/a/21302474/2586761

请参阅原始答案了解更多详情