如何同时重命名Git本地和远程分支名称?

1552
我有一个指向远程分支origin/regacy的本地分支master(哎呀,打错字了!)。
我该如何将远程分支重命名为origin/legacy或origin/master?
我尝试过:
git remote rename regacy legacy

但是这个出错了:
错误:无法将配置部分“remote.regacy”重命名为“remote.legacy”

1
请参考以下链接:https://dev59.com/YnI_5IYBdhLWcg3wF_F3 - NaN
1
可能是 如何重命名本地 Git 分支? 的重复问题。 - Vineet Jain
相关问题:在Git中远程重命名分支 - joanis
5
简而言之:1. 切换到本地分支,2. git branch -M 新名称 3. git push -d origin 旧名称 4. git push -u origin 新名称 - aderchox
5
好的回答!我会重新组织一下:
  1. 切换到旧分支 old name
  2. 重命名 git branch –m old-name new-name
  3. 切换到新分支 git checkout new name
  4. 推送更改到新远程分支 git push -u origin new-name
  5. 在 GH 网页上创建 PR,你将会看到新分支和旧分支
  6. 回到分支 new name,现在你可以删除旧分支的远程头部了 git push -d origin old-name。现在本地和远程仓库只有一个新分支包含所有提交记录,旧分支已经安全删除了,在新分支创建后。
- Sumi
显示剩余3条评论
21个回答

6

另一个解决方法如下:

  1. 切换到你想要修改的分支
  2. 从该分支创建一个新的分支
  3. 将上游分支设置为远程
  4. 删除本地和远程的旧分支

更具体地说:

# 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>

4

没有直接的方法,

  1. 重命名本地分支,

    我的当前分支是master

    git branch -m master_renamed #master_renamed是master的新名称

  2. 删除远程分支,

    git push origin --delete master #origin是远程名称

  3. 将重命名的分支推送到远程,

    git push origin master_renamed

就这样...


1
简单易行,只需三步。唯一可以建议的改进是使用 git push -u origin master_renamed 命令将分支设置为跟踪分支。 - ut9081

3
GitHub上托管的Git存储库中,可以使用存储库设置重命名分支。作为副作用,GitHub中的分支保护规则也会被更改。
  1. 访问您的存储库设置中的“分支”:https://github.com/<name>/<repository-name>/settings/branches

  2. 重命名分支Branches page in GitHub repository settings

  3. 使用此存储库的每个人都必须在本地执行以下操作:

$ git fetch
$ git checkout <new_name>

2

即使不重命名本地分支,也可以通过三个简单的步骤完成:

  1. 进入您在GitHub上的存储库
  2. 从要重命名的旧分支创建一个新分支
  3. 删除旧分支
注意:保留html标签

2
除了其他人提出的步骤之外,请记住
如果你试图删除default分支(例如master),则在运行git push origin :<branch_name>时会收到以下错误: ![remote rejected] master (refusing to delete the current branch: refs/heads/<branch_name>) error: failed to push some refs to '<repo_name>' a)在删除分支之前更改default(Github示例)
  1. 进入你的repo。
  2. 点击“设置”
  3. 按照下图所示更改default分支:

enter image description here

b)然后删除[target] remote: $ git push origin :master

2

我使用这些git别名来自动完成大部分工作:

Original Answer翻译成:最初的回答

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等,此命令可以正常工作。 你也可以根据需要进行修改,但这给了你一个思路。

注意:保留html标签。


1

首先,确保本地分支的名称已更正为正确的新名称。 适当的命令是git branch -a

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

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

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


0

仅重命名远程分支:

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

或者:

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

git-rr oldname newname

0
如果您想使用一个单一命令重命名当前分支,可以这样做:
git rename my-new-branch-name

然后,您需要创建一个名为git-rename的文件,使其可执行 (chmod +x git-rename),并将其保存到包含this$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"

0
最简单的方法就是在当前分支的基础上创建一个新的分支,然后推送到远程仓库。然后删除你之前的分支(包括本地和远程)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接