重命名几个git分支

时间:2015-07-14 23:26:14

标签: git bash

我从不同的git提供程序切换到GitHub。我用

将所有分支机构拉到了我当地
for remote in `git branch -r`; do git branch --track $remote; done

但是我没有得到名为name的分支,而是将其命名为origin/name,所以现在我需要将它们重命名为name

如何批量重命名它们?或者也许只是用正确的名字拉它们也会有所帮助。

2 个答案:

答案 0 :(得分:3)

for remote in `git branch -r`; do git branch --track $remote; done

远程跟踪分支通常以其远程名称作为第一个元素来引用,因此git branch -r向您显示例如origin/masterorigin/release等等。但是你自己的分支通常不会带有前缀。

远程跟踪分支origin/master的完整拼写是refs/remotes/origin/master,以及分支命令(以及采用不开始的分支和标记名称的任何其他命令{{1}正在做的是通过你如何使用它来推断你所追求的东西。

因此,对于ref/,您将其用作本地分支名称。您可能想要的是

git branch --track origin/master

for remote in `git branch -r`; do git branch --track ${remote#*/} $remote; done 中的#*/是shell参数扩展功能的一部分,找到"参数扩展"在任何shell文档中,google' man sh'并找到该部分。它从扩展中删除与模式${remote#*/}匹配的最短前导字符串,因此它会在此处删除*/

答案 1 :(得分:-1)

如果您有2个存储库,

本地名为local

遥控器名为origin

在local的master分支中,您可以删除所有以“origin”开头的分支:

$ git branch -D origin/name_of_branch
$ git branch -D origin name_of_other_branch

然后,

$ git fetch origin

将允许本地使用最新版本的源。对于要从​​原点下拉的每个分支:

$ git checkout -b name_of_branch
$ git rebase origin/name_of_branch

这将在本地创建分支“name_of_branch”,并将更改从origin转移到该分支。

您还希望确保“origin”中没有冲突的更改。如果有,请发布问题,我们可以在另外的问题中进行讨论。