在Git中搜索特定分支

21

我希望您能为我翻译一下:如何在 Git 中筛选某个分支?简单吗?

若要显示特定分支中的文件,可以使用以下命令:

git show branch:my_branch bla_sheep.txt

类似的语法也被用于 diff 等命令。

有没有一种简单的方法可以在一个分支中使用 grep 命令:

git grep branch:my_branch <regex>
2个回答

18

查看多个提交,从某个分支的末尾开始向后工作: git grep可以查看任何特定的 tree (因此任何给定的提交都标识了一个特定的tree),但要迭代在某个分支中包含的每个提交,您需要自己执行git rev-list

git rev-list branch | while read rev; do git grep <regexp> $rev; done

例如(但您可能需要更加精美地处理此操作,以便在找到所需内容后停止grep)。

如果你想要查找分支 <branch> 的最新提交,并查找(或未能找到)任何一个与<regexp>匹配的实例, 只需简单执行以下命令:

git grep <regexp> branch

循环形式仅适用于您希望从该顶端提交开始,并向后继续工作,浏览分支上以前的提交。


这个会重复所有的提交。但是我只关心得到一个结果。更像是 - 分支上的最后一次提交。 - p0lAris
这就是为什么我说你可能想要把它弄得花里胡哨一些。请注意,默认情况下git rev-list以相反的时间顺序列出事物,因此如果您想要最新的结果,只需在git grep找到内容后停止即可。(虽然没有记录,但似乎git grep具有与普通grep相同的退出状态,即0 = 找到了内容,1 = 没有找到。我没有进一步测试。) - torek
谢谢。不过我想保持这个开放一段时间。 - p0lAris

9

要搜索另一个分支,请使用以下命令:

git grep <regex> <branch-name>

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