我有四个像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'
我该如何解决这个问题?
答案 0 :(得分:508)
您无法直接重命名远程分支。 您必须将其删除然后重新推送它。
# 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
当您使用git branch -m
(移动)时,Git也会使用新名称更新您的跟踪分支。
git remote rename legacy legacy
git remote rename
正在尝试更新配置文件中的远程部分。它会将具有给定名称的远程重命名为新名称,但在您的情况下,它没有找到任何名称,因此重命名失败。
但它不会按你的想法行事;它会重命名本地配置远程名称,不远程分支。
注意强> Git服务器可能允许您使用Web界面或外部程序(如Sourcetree等)重命名Git分支,但您必须记住,在Git中所有工作都是在本地完成的,因此建议使用上述命令工作。
答案 1 :(得分:75)
如果您错误地命名了分支并将其推送到远程存储库,请按照以下步骤重命名该分支(based on this article):
重命名您当地的分支机构:
如果您在分支机构上,则要重命名:
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
答案 2 :(得分:25)
似乎有一种直接的方式:
如果你真的只想远程重命名分支(不同时重命名任何本地分支),你可以使用一个命令来完成这项工作,如
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
有关详细信息,请参阅原始答案。
答案 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)
如果您已经将错误的名称推送到远程,请执行以下操作:
切换到要重命名的本地分支
git checkout <old_name>
重命名本地分支
git branch -m <new_name>
按下<new_name>
本地分支并重置上游分支
git push origin -u <new_name>
删除<old_name>
远程分支
git push origin --delete <old_name>
这是基于this article的。
答案 7 :(得分:0)
没有直接的方法,
重命名本地分支,
我目前的分支是主
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是主人的新名称
删除远程分支
git branch -m master_renamed
#origin是remote_name
将重命名的分支推送到远程
git push origin --delete master
就是这样......
答案 8 :(得分:0)
即使不通过三个简单的步骤即可重命名本地分支,也可以完成此操作:
答案 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)
重命名您的本地分支。 如果您在分支机构上,则要重命名:
git branch -m新名称
如果您在其他分支机构上:
git branch -m old-name new-name
删除旧名称的远程分支,然后推送新名称的本地分支。
git push origin:old-name new-name
为新名称的本地分支重置上游分支。 切换到分支,然后:
git push origin -u新名称
所有设置!