Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重命名几个git分支_Git_Bash - Fatal编程技术网

重命名几个git分支

重命名几个git分支,git,bash,Git,Bash,我正在从另一个git提供商切换到GitHub。我把所有的树枝都拉到了我的地方 for remote in `git branch -r`; do git branch --track $remote; done 但是我没有将分支命名为name,而是将它们命名为origin/name,所以现在我需要将它们重命名为name 你知道如何批量重命名它们吗?或者干脆用正确的名字把它们取出来也会有帮助。如果你有两个存储库 本地名为local 遥控器被称为origin 在本地主分支中,可以删除所有以“原点”

我正在从另一个git提供商切换到GitHub。我把所有的树枝都拉到了我的地方

for remote in `git branch -r`; do git branch --track $remote; done
但是我没有将分支命名为
name
,而是将它们命名为
origin/name
,所以现在我需要将它们重命名为
name


你知道如何批量重命名它们吗?或者干脆用正确的名字把它们取出来也会有帮助。

如果你有两个存储库

本地名为
local

遥控器被称为
origin

在本地主分支中,可以删除所有以“原点”开头的分支:

等等

那么

$ git fetch origin
将允许本地用户使用最新版本的origin。对于要从原点下拉的每个分支:

$ git checkout -b name_of_branch
$ git rebase origin/name_of_branch
这将在本地创建分支“name\u of_branch”,并将更改从源位置拉入该分支

您还需要确保“origin”中没有冲突的更改。如果有,发布问题,我们可以在单独的问题中讨论

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
,分支命令(以及任何其他采用未启动
ref/
的分支和标记名称的命令)正在做的是通过使用方式推断您在追求什么

所以对于
git分支——跟踪origin/master
您将其用作本地分支名称。你可能想要的是

for remote in `git branch -r`; do git branch --track ${remote#*/} $remote; done

${remote}*/}
中的
\*/
是shell参数扩展功能的一部分,在任何shell文档中查找“参数扩展”,谷歌“man sh”并查找该部分。它将匹配模式
*/
的最短前导字符串从扩展中剥离,因此它将在此处剥离
origin/

如果我没有在问题上使用“几个”这个词,这将起作用。祝你在近400家分支机构中成功
for remote in `git branch -r`; do git branch --track ${remote#*/} $remote; done