按作者
当你只想看某一特定作者的提交的时候,你可以使用 --author
标记。它接受正则表达式,返回所有作者名字满足这个规则的提交。如果你知道那个作者的确切名字你可以直接传入文本字符串:
git log --author="John"
它会显示所有作者叫 John 的提交。作者名不一定是全匹配,只要包含那个子串就会匹配。
你也可以用正则表达式来创建更复杂的检索。比如,下面这个命令检索名叫 Mary 或 John 的作者的提交。
git log --author="John\|Mary"
注意作者的邮箱地址也算作是作者的名字,所以你也可以用这个选项来按邮箱检索。
如果你的工作流区分提交者和作者,--committer
也能以相同的方式使用。
按提交信息
按提交信息来过滤提交,你可以使用 --grep
标记。它和上面的 --author
标记差不多,只不过它搜索的是提交信息而不是作者。
比如说,你的团队规范要求在提交信息中包括相关的issue编号,你可以用下面这个命令来显示这个 issue 相关的所有提交:
git log --grep="JRA-224:"
你也可以传入 -i 参数来忽略大小写匹配。
按文件
很多时候,你只对某个特定文件的更改感兴趣。为了显示某个特定文件的历史,你只需要传入文件路径。比如说,下面这个命令返回所有和 foo.py
和 bar.py
文件相关的提交:
git log -- foo.py bar.py
--
告诉 git log
接下来的参数是文件路径而不是分支名。如果分支名和文件名不可能冲突,你可以省略 --
。
按范围
你可以传入范围来筛选提交。这个范围由下面这样的格式指定,其中 <since>
和 <until>
是提交的引用:
git log <since>..<until>
这个命令在你使用分支引用作为参数时特别有用。这是显示两个分支之间区别最简单的方式。看看下面这个命令:
git log master..feature
其中的 master..feature
范围包含了在 feature
分支而不在 master
分支中所有的提交。换句话说,这个命令可以看出从master
分支fork
到feature
分支后发生了哪些变化。
转载自Git log 高级用法, 若侵犯了作者权益,请联系我删除。
网友评论