如何将 Git/Mercurial 日志限制为日志至少包含两个字符串之一的提交?
How can I limit the Git/Mercurial log to commits whose logs contain at least one of two strings?
有没有一种方法可以为 git/Mercurial 命令发送两个选项?
我想在 git 存储库和 Mercurial 存储库的历史记录中搜索特定单词,比如 "commit"。但是,我不确定它是如何写在提交消息 "commit" 或 "com-mit" 中的?所以,我想用命令发送这些选项。我知道如果我想搜索我会输入:
在git中:
git log --grep="commit"
在 mercurial 中:
hg log --keyword commit
有什么帮助吗?
使用 Mercurial 执行此操作的最灵活方法是使用 revsets。对于您的示例:
hg log -r 'grep("\b(com-mit|commit)\b")'
在Python正则语法中,\b
表示单词边界,反斜杠需要转义。 (a|b)
语法用于匹配一个或另一个。参数周围的单引号在那里 shell 不会解释元字符本身。
您还可以通过将 revsets 与 and
:
组合来简化正则表达式
hg log -r 'grep("\bcom-mit\b") or grep("\bcommit\b")'
如果您不需要精确匹配单词(例如,如果您还想匹配 "committer" 和 "committed",而不仅仅是 "commit"),您可以使用关键字 revsets :
hg log -r 'keyword("com-mit") or keyword("commit")'
通过使用 and
而不是 or
,您可以找到同时匹配两者而不是其中之一的修订;此外,您可以使用 reverse(...)
以相反的顺序列出匹配项,例如:
hg log -r 'reverse(keyword("com-mit") or keyword("commit"))'
有没有一种方法可以为 git/Mercurial 命令发送两个选项?
我想在 git 存储库和 Mercurial 存储库的历史记录中搜索特定单词,比如 "commit"。但是,我不确定它是如何写在提交消息 "commit" 或 "com-mit" 中的?所以,我想用命令发送这些选项。我知道如果我想搜索我会输入:
在git中:
git log --grep="commit"
在 mercurial 中:
hg log --keyword commit
有什么帮助吗?
使用 Mercurial 执行此操作的最灵活方法是使用 revsets。对于您的示例:
hg log -r 'grep("\b(com-mit|commit)\b")'
在Python正则语法中,\b
表示单词边界,反斜杠需要转义。 (a|b)
语法用于匹配一个或另一个。参数周围的单引号在那里 shell 不会解释元字符本身。
您还可以通过将 revsets 与 and
:
hg log -r 'grep("\bcom-mit\b") or grep("\bcommit\b")'
如果您不需要精确匹配单词(例如,如果您还想匹配 "committer" 和 "committed",而不仅仅是 "commit"),您可以使用关键字 revsets :
hg log -r 'keyword("com-mit") or keyword("commit")'
通过使用 and
而不是 or
,您可以找到同时匹配两者而不是其中之一的修订;此外,您可以使用 reverse(...)
以相反的顺序列出匹配项,例如:
hg log -r 'reverse(keyword("com-mit") or keyword("commit"))'