协慌网

登录 贡献 社区

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

我有四个分支,例如 master-> origin / regacy,FeatureA-> origin / FeatureA。如您所见,我输入了错误的名称。

所以我想重命名一个远程分支名称(起源 / 旧式→起源 / 旧式或起源 / 主版)

我尝试下面的命令:

git remote rename regacy legacy

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

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

我怎么解决这个问题?

答案

示意图,可爱的git远程图


有几种方法可以做到这一点:

  1. 更改您的本地分支,然后推送您的更改
  2. 使用新名称将分支推送到远程,同时在本地保留原始名称

重命名本地和远程

# 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>

# Or shorter way to delete remote branch [:]
git push <remote> :<old_name>

# Prevent git from using the old name when pushing in the next step.
# Otherwise, git will use the old upstream name instead of <new_name>.
git branch --unset-upstream <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>

控制台屏幕截图


重命名仅远程分支

信用: ptim

# In this option, we will push the branch to the remote with the new name
# While keeping the local name as is
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

重要的提示:

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

git remote rename legacy legacy

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

但这不会按照您的想法进行。它将重命名您的本地配置远程名称,而不是远程分支。


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

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

  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>

在 Git 中远程重命名分支

有关更多详细信息,请参见原始答案。