我有四个分支,例如 master-> origin / regacy,FeatureA-> origin / FeatureA。如您所见,我输入了错误的名称。
所以我想重命名一个远程分支名称(起源 / 旧式→起源 / 旧式或起源 / 主版)
我尝试下面的命令:
git remote rename regacy legacy
但是 Git 控制台向我返回了一条错误消息。
error : Could not rename config section 'remote.regacy' to '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, 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 中所有工作都是在本地完成的,因此建议使用上述命令去工作。
如果您错误地命名了一个分支并将其推送到远程存储库,请按照以下步骤重命名该分支( 基于本文):
重命名您的本地分支:
如果您在分支上,则要重命名:
git branch -m new-name
如果您在另一个分支上:
git branch -m old-name new-name
删除old-name
远程分支,然后推送new-name
本地分支:
git push origin :old-name new-name
重置上游分支为新名称的本地分支:
切换到分支,然后:
git push origin -u new-name
似乎有一种直接的方法:
如果您确实只想远程重命名分支(而不同时重命名任何本地分支),则可以使用单个命令执行此操作,例如
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
有关更多详细信息,请参见原始答案。