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

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


我试着:

git remote rename regacy legacy

但这给出了一个错误:

错误:不能重命名配置区段的远程。Regacy '到'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>


只重命名远程分支

信用: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中所有的工作都是在本地完成的,所以建议使用上述命令来工作。


似乎有一个直接的方法:

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

详见原文。


如果您错误地命名了一个分支并将其推到远程存储库,请按照以下步骤重命名该分支(基于本文):

重命名你的本地分支: 如果你在你想重命名的分支上: Git branch -m new-name 如果你在不同的分支上: Git branch -m old-name new-name 删除旧名称的远程分支,并推送新名称的本地分支: Git推送源:old-name new-name 重置新名称本地分支的上游分支: 切换到分支,然后: Git推送origin -u new-name


没有直接的方法,

重命名本地分支, 我现在的分支是master Git branch -m master_rename #master_rename是master的新名称 删除远程分支, Git push origin——delete master #origin是remote_name 将重命名的分支推到远程, Git推送origin master_rename

就是这样……


它也可以通过以下方式完成。

首先重命名本地分支,然后重命名远程分支。

重命名本地分支:

如果登录到另一个分支,

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 $1 $2; git status; git push --delete origin $1; git status; git push -u origin $2; git branch -a; exit;'

用法:git从_branch移动到_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 <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分支-m <new_name> 推送<new_name>本地分支并重置上游分支 Git push origin -u <new_name> 删除<old_name>远程分支 Git push origin——delete <old_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 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"

另一个解决方法如下:

签出到您想更改的分支 从它创建一个新分支 上游设置为远程 从本地和远程删除旧的分支

更具体地说:

# 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,当你运行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


仅重命名远程分支:

(set -ex; old=oldname; new=newname; git push origin origin/$old:refs/heads/$new :$old)

or:

git-rr() (set -ex; old=$1; new=$2; git push origin origin/$old:refs/heads/$new :$old)

git-rr oldname newname

首先,确保本地分支具有正确的新名称。 相应的命令是git branch -a。

现在,从远程存储库中删除具有旧的、不正确的名称的分支。 为此,使用以下命令 Git push origin——delete <old-name>

验证旧的分支已经被正确地删除。 现在添加具有正确名称的分支。 为此,使用命令git push origin -u <new-name>

最后,执行上游分支的重置,以确保更改是有效的。


托管在GitHub上的Git存储库中的分支可以使用存储库设置重命名。作为一个副作用,GitHub中的分支保护规则也将被改变。

访问存储库设置中的“分支”:https://github.com/<name>/<repository-name>/settings/ Branches 重命名分支 每个使用这个存储库的人都必须在本地做:

$ git获取 $ git checkout <new_name>


重命名本地分支

 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的新远程分支。