我有一个本地分支主指向一个远程分支原点/regacy(哎呀,拼写错误!)

如何将远程分支重命名为原点/遗留或原点/主?


我试着:

git remote rename regacy legacy

但这给出了一个错误:

错误:不能重命名配置区段的远程。Regacy '到'remote.legacy'


当前回答

重命名本地分支

 git branch -m <old_name> <new_name>

将本地分支从master重命名为legacy

git branch -m master legacy

重命名远程分支

删除使用旧名称的远程分支 将具有新名称的本地分支推到远程存储库

git push origin :regacy

git push origin legacy

Git push origin:regacy删除名为regacy的远程分支。 Git push origin legacy将名为legacy的本地分支推到远程存储库,并创建一个名为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>


只重命名远程分支

信用: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分支-m (move)时,git也会用新名称更新你的跟踪分支。

Git远程重命名遗留遗留

Git远程重命名正在尝试更新配置文件中的远程部分。它将使用给定名称将远程重命名为新名称,但在您的示例中,它没有找到任何名称,因此重命名失败。

但它不会像你想的那样;它将重命名本地配置远程名称,而不是远程分支。


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

除了其他人列出的其他步骤,请记住:

如果你试图删除默认的分支,例如master,当你运行git push origin:<branch_name>时,你会得到这个错误

! [remote rejected] master (refused to delete current branch: refs/heads/<branch_name>) error: failed to push some refs to '<repo_name>'. [remote rejected] master (refused to delete current branch: refs/heads/<branch_name>)

a)在删除分支之前更改默认值(Github示例)

去回购吧。 点击“设置” 修改默认分支如下图所示:

b)删除[target] remote:

$ git push origin:master

重命名本地分支

 git branch -m <old_name> <new_name>

将本地分支从master重命名为legacy

git branch -m master legacy

重命名远程分支

删除使用旧名称的远程分支 将具有新名称的本地分支推到远程存储库

git push origin :regacy

git push origin legacy

Git push origin:regacy删除名为regacy的远程分支。 Git push origin legacy将名为legacy的本地分支推到远程存储库,并创建一个名为legacy的新远程分支。

似乎有一个直接的方法:

如果您真的只想远程重命名分支(而不同时重命名任何本地分支),您可以使用如下命令来完成此操作 Git push <remote> <remote>/<old_name>:refs/heads/<new_name>:<old_name> 在Git中远程重命名分支

详见原文。

如果你想用一个命令重命名当前分支,就像这样:

git rename my-new-branch-name

然后,你必须创建一个名为git-rename的文件,使其可执行(chmod +x git-rename),并将其保存到你的$PATH文件夹中,包含以下内容:

#!/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="$1"; shift
git branch -m "$newBranch" && \
git push origin :"$currentBranch" "$newBranch"