在本地和远程重命名 Git 分支? [复制]

Posted

技术标签:

【中文标题】在本地和远程重命名 Git 分支? [复制]【英文标题】:Rename a Git branch locally and remotely? [duplicate] 【发布时间】:2016-08-28 06:01:27 【问题描述】:

有没有办法在本地重命名 Git 分支并将其推送到远程分支,即使已经有很多提交推送到远程分支?

或者,是否需要新建一个本地分支,删除旧的本地分支,然后对远程仓库重复操作?

【问题讨论】:

【参考方案1】:

是的,

存在 move 功能以在本地重命名分支

git branch --move <old_name> <new_name>

但要推送它,你必须删除旧的并推送新的

git checkout <new_name>
git push origin [--set-upstream] <new_name>
git push origin --delete <old_name>

--set-upstream是可选的,它配置新的本地分支来跟踪推送的分支

您可以使用以下简写:

在本地移动(--move):

  git branch -m <old_name> <new_name>

推送新分支(--set-upstream,可选):

  git push origin [-u] <new_name>

删除(--delete):

  git push origin -d <old_name>

注意。

感谢torek的评论:

顺便说一句,值得一提的是你应该

    通知共享上游的其他用户您将执行此操作,并且 按所示顺序执行此操作(设置新名称,然后删除旧名称)。

#1 的原因是那些用户需要调整。

#2 的原因主要是为了提高效率:它避免了将对象重新复制到上游存储库,该存储库在删除分支时会丢弃提交(大多数裸存储库都这样做,而大多数接受推送的存储库都是裸存储)

【讨论】:

非常轻微。我相信您会混淆使用远程速记 branch -D 在本地删除分支。但是在最新的 git(git 版本 2.14.+)中,没有这样的-D 选项作为--delete 的简写,而是小写的-d。所以应该是git push origin -d &lt;old_name&gt; 如果你有一个带有 &lt;old_name&gt; 的 Open PR(例如在 GitHub 上),当你删除远程分支时它会关闭,所以你需要创建一个新的,因为没有更改 PR 所基于的分支的方式(当时)(您只能更改目标)。 删除远程分支的更简洁的方法是git push origin :[old_branch_name] 对于某些遥控器(例如Bitbucket),在最后一步(--delete)之前,您需要将分支“取消分配”为repo的“默认”分支

以上是关于在本地和远程重命名 Git 分支? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sh 在本地和远程重命名git分支

sh 在本地和远程重命名git分支

sh 在本地和远程重命名git分支

sh 在本地和远程重命名git分支

sh 在本地和远程重命名git分支

sh 在本地和远程重命名git分支