如何重命名 Git 本地和远程分支名称?
How do I rename both a Git local and remote branch name?
我有四个分支,例如 master -> origin/regacy、FeatureA -> origin/FeatureA。如您所见,我输入了错误的名称。
所以我想重命名一个远程分支名称(origin/regacy → origin/legacy or origin/master)
我试试下面的命令:
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 <new_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>
仅重命名远程分支
来源:
# 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
正在尝试更新配置文件中的远程部分。它会将具有给定名称的遥控器重命名为新名称,但在您的情况下,它没有找到任何名称,因此重命名失败。
但是它不会像你想的那样;它将重命名您的 local 配置远程名称和 not 远程分支。
备注
Git 服务器可能允许您使用 Web 界面或外部程序(如 Sourcetree 等)重命名 Git 分支,但您必须记住,在 Git 中所有的工作都是在本地完成,所以建议使用上面的命令来工作。
好像有直接的方法:
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
更多详细信息,请参阅原始答案。
如果您错误地命名了一个分支并将其推送到远程存储库,请按照以下步骤重命名该分支 (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
没有直接的方法,
重命名本地分支,
我当前的分支是master
git branch -m master_renamed
#master_renamed 是主人的新名字
删除远程分支,
git push origin --delete master
#origin is remote_name
将重命名的分支推送到远程,
git push origin master_renamed
就是这样...
也可以通过以下方式完成
先重命名本地分支,再重命名远程分支。
正在重命名本地分支:
如果在另一个分支登录,
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
这甚至可以通过三个简单的步骤重命名本地分支来完成:
- 转到 GitHub
中的存储库
- 从要重命名的旧分支创建新分支
- 删除旧分支
我使用这些 git 别名,它几乎可以自动完成工作:
git config --global alias.move '!git checkout master; git branch -m ; git status; git push --delete origin ; git status; git push -u origin ; git branch -a; exit;'
Usage: git move FROM_BRANCH TO_BRANCH
如果您有默认名称(如 master、origin 等),它会起作用。
你可以随意修改,但它给了你想法。
我必须执行以下任务来重命名本地和远程分支:
# 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>
重命名您的本地分支。
如果您在要重命名的分支上:
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
一切就绪!
附加一个简单的 代码片段 以重命名您当前的分支(本地和源):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
解释 来自 git 文档:
git branch -m or -M option, will be renamed to
. If had a corresponding reflog, it is renamed
to match , and a reflog entry is created to remember the
branch renaming. If exists, -M must be used to force the
rename to happen.
The special refspec : (or +: to allow non-fast-forward updates)
directs Git to push "matching" branches: for every branch that exists
on the local side, the remote side is updated if a branch of the same
name already exists on the remote side.
--set-upstream
Set up 's tracking information so is considered 's upstream branch. If no is specified, then it defaults to the current branch.
如果您已经将错误的名称推送到远程,请执行以下操作:
切换到您要重命名的本地分支
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。
- 重命名您的本地分支机构。
如果您在要重命名的分支上:
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
如果你想使用单个命令来重命名当前分支,像这样:
git rename my-new-branch-name
然后,您必须创建一个名为 git-rename
的文件,使其可执行 (chmod +x git-rename
) 并将其保存到 $PATH
中的一个文件夹,其中包含 this :
#!/bin/sh
currentBranch="$(git rev-parse --abbrev-ref HEAD)"
test $# != 1 && cat <<EOF && exit 1
Renames the current branch ($currentBranch) both locally and remotely.
USAGE:
git rename <new branch name>
EOF
newBranch=""; shift
git branch -m "$newBranch" && \
git push origin :"$currentBranch" "$newBranch"
另一种解决方法如下:
- 结帐到您要更改的分支机构
- 从中创建一个新分支
- 将上游设置为远程
- 从本地和远程删除旧分支
更具体地说:
# Checkout to the branch you want to rename
git checkout <old_branch_name>
# Create a new branch from the old one and checkout to it
git checkout -b <new_branch_name>
# Push the new branch to remote
git push -u <origin> HEAD
# Delete local branch
git branch -d <old_branch_name>
# Delete remote branch
git push <origin> -d <old_branch_name>
检查您使用的是哪个分支下面的命令
git branch -a
结帐到您要重命名的分支
git checkout branch_to_rename
使用
重命名分支
git branch -m new_name
推送更改
git push origin :old_name new_name
我有四个分支,例如 master -> origin/regacy、FeatureA -> origin/FeatureA。如您所见,我输入了错误的名称。
所以我想重命名一个远程分支名称(origin/regacy → origin/legacy or origin/master)
我试试下面的命令:
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 <new_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>
仅重命名远程分支
来源:
# 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
正在尝试更新配置文件中的远程部分。它会将具有给定名称的遥控器重命名为新名称,但在您的情况下,它没有找到任何名称,因此重命名失败。
但是它不会像你想的那样;它将重命名您的 local 配置远程名称和 not 远程分支。
备注 Git 服务器可能允许您使用 Web 界面或外部程序(如 Sourcetree 等)重命名 Git 分支,但您必须记住,在 Git 中所有的工作都是在本地完成,所以建议使用上面的命令来工作。
好像有直接的方法:
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
更多详细信息,请参阅原始答案。
如果您错误地命名了一个分支并将其推送到远程存储库,请按照以下步骤重命名该分支 (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
没有直接的方法,
重命名本地分支,
我当前的分支是master
git branch -m master_renamed
#master_renamed 是主人的新名字删除远程分支,
git push origin --delete master
#origin is remote_name将重命名的分支推送到远程,
git push origin master_renamed
就是这样...
也可以通过以下方式完成
先重命名本地分支,再重命名远程分支。
正在重命名本地分支:
如果在另一个分支登录,
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
这甚至可以通过三个简单的步骤重命名本地分支来完成:
- 转到 GitHub 中的存储库
- 从要重命名的旧分支创建新分支
- 删除旧分支
我使用这些 git 别名,它几乎可以自动完成工作:
git config --global alias.move '!git checkout master; git branch -m ; git status; git push --delete origin ; git status; git push -u origin ; git branch -a; exit;'
Usage: git move FROM_BRANCH TO_BRANCH
如果您有默认名称(如 master、origin 等),它会起作用。 你可以随意修改,但它给了你想法。
我必须执行以下任务来重命名本地和远程分支:
# 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>
重命名您的本地分支。 如果您在要重命名的分支上:
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
一切就绪!
附加一个简单的 代码片段 以重命名您当前的分支(本地和源):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
解释 来自 git 文档:
git branch -m or -M option, will be renamed to . If had a corresponding reflog, it is renamed to match , and a reflog entry is created to remember the branch renaming. If exists, -M must be used to force the rename to happen.
The special refspec : (or +: to allow non-fast-forward updates) directs Git to push "matching" branches: for every branch that exists on the local side, the remote side is updated if a branch of the same name already exists on the remote side.
--set-upstream Set up 's tracking information so is considered 's upstream branch. If no is specified, then it defaults to the current branch.
如果您已经将错误的名称推送到远程,请执行以下操作:
切换到您要重命名的本地分支
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。
- 重命名您的本地分支机构。
如果您在要重命名的分支上:
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
如果你想使用单个命令来重命名当前分支,像这样:
git rename my-new-branch-name
然后,您必须创建一个名为 git-rename
的文件,使其可执行 (chmod +x git-rename
) 并将其保存到 $PATH
中的一个文件夹,其中包含 this :
#!/bin/sh
currentBranch="$(git rev-parse --abbrev-ref HEAD)"
test $# != 1 && cat <<EOF && exit 1
Renames the current branch ($currentBranch) both locally and remotely.
USAGE:
git rename <new branch name>
EOF
newBranch=""; shift
git branch -m "$newBranch" && \
git push origin :"$currentBranch" "$newBranch"
另一种解决方法如下:
- 结帐到您要更改的分支机构
- 从中创建一个新分支
- 将上游设置为远程
- 从本地和远程删除旧分支
更具体地说:
# Checkout to the branch you want to rename
git checkout <old_branch_name>
# Create a new branch from the old one and checkout to it
git checkout -b <new_branch_name>
# Push the new branch to remote
git push -u <origin> HEAD
# Delete local branch
git branch -d <old_branch_name>
# Delete remote branch
git push <origin> -d <old_branch_name>
检查您使用的是哪个分支下面的命令
git branch -a
结帐到您要重命名的分支
git checkout branch_to_rename
使用
重命名分支git branch -m new_name
推送更改
git push origin :old_name new_name