我从不同的git提供程序切换到GitHub。我用
将所有分支机构拉到了我当地for remote in `git branch -r`; do git branch --track $remote; done
但是我没有得到名为name
的分支,而是将其命名为origin/name
,所以现在我需要将它们重命名为name
。
如何批量重命名它们?或者也许只是用正确的名字拉它们也会有所帮助。
答案 0 :(得分:3)
for remote in `git branch -r`; do git branch --track $remote; done
远程跟踪分支通常以其远程名称作为第一个元素来引用,因此git branch -r
向您显示例如origin/master
,origin/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”中没有冲突的更改。如果有,请发布问题,我们可以在另外的问题中进行讨论。