Git - 重命名多个分支

时间:2017-07-15 12:15:33

标签: git bash

这里我们有一个git repo,它有多个分支,以相同的前缀开头,如下所示:

pfx.branchName1  
pfx.branchName2  
pfx.branchName3  
...

所以问题是如何从所有分支中快速删除所有前缀(“pfx。”)并获得如下内容:

branchName1  
branchName2  
branchName3  
... 

2 个答案:

答案 0 :(得分:3)

您可以从git branch的输出中过滤分支名称, 然后使用带替换的Bash循环来执行重命名:

git branch | sed -e 's/..//' | grep '^pfx\.' | while read b; do git branch -m "$b" "${b#pfx.}"; done

或稍微更紧凑但也许更难阅读:

git branch | sed -ne 's/^..pfx\.//p' | while read b; do git branch -m "pfx.$b" "$b"; done

答案 1 :(得分:3)

找到一个通用命令,用于搜索包含所需字符串的分支(例如"StringToFind")并通过用我们想要的字符串替换该部分进行重命名(例如"ReplaceWith"):

git branch | grep "StringToFind" | awk '{original=$1; sub("StringToFind","ReplaceWith"); print original, $1}' | xargs -n 2 git branch -m

注意:在开始重命名之前,我们可以运行此命令来查看要重命名的分支(仅为方便起见):

git branch | grep "StringToFind" | awk '{original=$1; sub("StringToFind","ReplaceWith"); print original, "->" , $1}'  

因此,对于我们的案例,请使用此功能删除前缀:

git branch | grep "pfx." | awk '{original=$1; sub("pfx.",""); print original, $1}' | xargs -n 2 git branch -m  

这是在删除之前检查的:

git branch | grep "pfx." | awk '{original=$1; sub("pfx.",""); print original, "->", $1}'