bash - 检查 git 分支是否包含给定主题的提交

标签 bash git grep

给定提交的确切主题行,我想知道分支是否包含具有该主题的提交。

我现在拥有的是: git log --format="%s"-F --grep="$msg""$branch"| grep -Fq --max-count=1 -- "$msg"

即使用固定字符串 grep 搜索日志并打印主题。然后使用相同的固定字符串搜索该主题并在第一个匹配处停止。

需要第二个 grep,因为 git log --grep 可能会在提交消息中的任何位置找到该模式(例如 Fixes "$msg")

然而,这有一个缺点,即它似乎总是遍历该分支的整个历史,这需要相当长的时间。

作为测试,我运行了 git log --format="%s"-F --grep="$msg""$branch"| grep -Fq --max-count=1 -- "$msg"git log --format="%s"-F --grep="$msg""$branch" code> 尽管发现/打印对 grep for 的提交非常快(第二次),但它们都花费了相同的时间

那么有没有一种方法可以更快或至少更快地直接在给定主题的分支中查找提交(使用固定字符串,因为 $msg 来自另一个命令,并且可能包含类似正则表达式的字符)让我的 log-grep-pipe 退出更快(成功时)?

最佳答案

试试这个:

git log --format="%s" "$branch" | grep -Fqx --max-count=1 -- "$msg"

这里x将匹配整行.. max-count 将返回第一个匹配项。

关于bash - 检查 git 分支是否包含给定主题的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75499548/

相关文章:

git - Git 可以差异存储 GZip 文件吗?

bash - 如何强制 grep 只返回文件而忽略目录?

regex - Perl - 迭代潜在的正则表达式匹配列表,直到找到一个,然后退出循环

linux - Bash:将 linux 中的文件拆分为 10 个仅由空行组成的文件

bash - Linode Lish bash : warning: setlocale: LC_ALL: cannot change locale (en_US. UTF-8)

linux - RHEL 7.4 中的 git 升级

bash - Git 不使用 SSH key 对 Azure DevOps 进行身份验证

BASH::从命令行在存档中查找文件

java - 在 shell 脚本中使用 JAVA 多行输出作为变量

java - 在 Linux 上执行 grep 命令并捕获结果