问题
I have four branches like master -> origin/regacy, FeatureA -> origin/FeatureA. As you can see, I typed the wrong name.
So I want to rename a remote branch name (origin/regacy → origin/legacy or origin/master)
I try the command below:
git remote rename regacy legacy
But Git console returned an error message to me.
error : Could not rename config section \'remote.regacy\' to \'remote.legacy\'
How can I solve this problem?
回答1:
You can't directly rename a remote branch. You have to delete it and then re-push it.
Renaming a branch
# 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>
Important note:
When you use the git branch -m
(move), Git is also updating your tracking branch with the new name.
git remote rename legacy legacy
git remote rename
is trying to update your remote section in your configuration file. It will rename the remote with the given name to the new name, but in your case, it did not find any, so the renaming failed.
But it will not do what you think; it will rename your local configuration remote name and not the remote branch.
Note Git servers might allow you to rename Git branches using the web interface or external programs (like Sourcetree, etc.), but you have to keep in mind that in Git all the work is done locally, so it's recommended to use the above commands to the work.
回答2:
If you have named a branch incorrectly AND pushed this to the remote repository follow these steps to rename that branch (based on this article):
Rename your local branch:
If you are on the branch you want to rename:
git branch -m new-name
If you are on a different branch:
git branch -m old-name new-name
Delete the
old-name
remote branch and push thenew-name
local branch:git push origin :old-name new-name
Reset the upstream branch for the new-name local branch:
Switch to the branch and then:git push origin -u new-name
回答3:
It seems that there is a direct way:
If you really just want to rename branches remotely (without renaming any local branches at the same time) you can do this with a single command like
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
Renaming branches remotely in Git
See the original answer for more detail.
回答4:
It can also be done the following way.
At first rename local branch, then remote branch.
Renaming the local branch:
If logged in another branch,
git branch -m old_branch new_branch
If logged in the same branch,
git branch -m new_branch
Renaming remote branch:
git push origin :old_branch // Delete the remote branch
git push --set-upstream origin new_branch // Create a new remote branch
回答5:
There is no direct method,
Rename Local Branch,
My current branch is master
git branch -m master_renamed
#master_renamed is new name of masterDelete remote branch,
git push origin --delete master
#origin is remote_namePush renamed branch into remote,
git push origin master_renamed
That's it...
回答6:
This can be done even without renaming the local branch in three simple steps:
- Go to your repository in GitHub
- Create a new branch from the old branch which you want to rename
- Delete the old branch
回答7:
I had to do the following task to rename local and remote branch:
# 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>
回答8:
I use these git alias and it pretty much does the job automatic:
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;'
Usage: git move FROM_BRANCH TO_BRANCH
It works if you have the default names like master, origin etc. You can modify as you wish but it gives you the idea.
来源:https://stackoverflow.com/questions/30590083/how-do-i-rename-both-a-git-local-and-remote-branch-name