给定提交的确切主题行,我想知道分支是否包含具有该主题的提交。
我现在拥有的是: 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/