在Git中如何搜索分支名称?

145

我想要找到一个特定的代码分支,我知道它的名字中包含特定的子字符串(我们的bug追踪器中的问题ID),但是我不知道整个分支的名称(这就是我想找出来的)。

我该如何搜索这个分支?


你好 =]请查看此链接(https://dev59.com/GGUp5IYBdhLWcg3wZHEc),它可以帮助你。 - Thaisa Mirely
2
@ThaisaMirely,您提供的链接是用于在所有分支中的所有文件中进行搜索。而这个问题只是要求搜索分支名称 - Steve Chambers
7个回答

180
git branch --all | grep <id>

27
为了不区分大小写,使用命令 git branch --all | grep -i <id> 进行筛选所有分支。 - Adam Johns
@Evil Toad,你的答案似乎不完整,因为上述两个命令都会输出3个条目,其中1个匹配分支名称,另外2个匹配远程对应项,如何获取第一个没有星号(*)的条目? - Vicky Dev
@VickyDev 看起来你要求的并不是 OP 所问的。如果你需要一个命令来获得不同的结果,也许你应该发布一个新问题。 - Evil Toad
1
请参考解决方案2,该方案适用于PowerShell。 - OrigamiEye

118

Git 1.7.8 提供了一种不使用 grep 的解决方案:

git branch --list <pattern> 和在 bash 中加上引号的方式 git branch --list '<pattern>'

这同样适用于通配符 (*),所以你可以使用 git branch --list *<id>* 来查找你的分支。

这会过滤掉由其余git branch命令返回的分支名称列表(例如,默认情况下仅显示本地分支,使用git branch -a --list<pattern>显示所有分支等)。


7
注意:此命令只会列出本地分支,即你将无法使用此命令找到远程分支。 - Kinaan Khan Sherwani
14
这是因为默认情况下 git branch 仅列出本地分支。请使用 git branch -r 列出远程分支,使用 git branch -a 列出所有分支。 - Calvin Li
5
在Bash中,为了防止glob表达式(类似于正则表达式)扩展,你需要将其用引号括起来。为了测试,请尝试输入git checkout -b JIRA-style-test-1 && git branch --list *test*git branch --list "*test*"。只有第二个命令将匹配到JIRA-style-test-1。请注意,这里的翻译是尽量保持原意并使用通俗易懂的语言,不包含额外解释或其他内容。 - Steven Kalt
1
@Facepalmed 已添加到答案中。 - Calvin Li
1
可以添加“--all”标志以搜索远程分支,命令为“git branch --list --all name”。额外奖励是它在Windows Powershell中也可以使用。 - OrigamiEye

14
git branch -a | grep selector

或者

git branch -r | grep selector

-a选项显示所有本地和远程分支,而-r选项仅显示远程分支。


13

查找包含指定文本的分支名称

git branch --list *text*

例如- 我想找到包含“production”单词的分支

git branch --list *production*

这是 git branch --list <whatever>。你写的那个不起作用,如果你没有使用关键字,它会创建一个名为 list 的分支。 - jpenna
似乎这只适用于本地分支,那么远程分支呢? - Esi
@Esi 添加标志 --all - OrigamiEye
远程分支上运行良好:git branch -r --list *production* - Gail Foad

10
根据其他人给出的答案,我将以下内容添加到我的.gitconfig中。
[alias]
  findb = "!f(){ git branch -ra | grep $1; }; f"

所以在命令行中,我可以键入git findb BUG-123


1
虽然两者都在分支列表上使用grep,但这个更适合频繁使用,比被接受的答案更好。谢谢。 - Saim

1
可以使用git branch命令的-l--list选项传递多个模式。所有与模式匹配的分支将被返回。通配符*可用于匹配名称中包含子字符串的任何分支。
要筛选所有分支,请添加-a--all选项。
例如:
git branch -la "*containsThisSubstring*" "*withThisSuffix" "withThisPrefix*"

0
假设您正在使用GitHub,那里有一个下拉列表用于您的分支和标签,在该下拉菜单中有一个搜索区域。
您可以使用该搜索区域来搜索您的分支名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接