有许多方法可以使用 git log 选择提交记录。例如:
还有许多其他方法。
然而,所有这些方法都仅在命令行中选择特定提交记录。我的需求是要查看指定范围内的所有提交记录,但 突出显示(使用颜色、标记或其他方式)其中特定的一部分提交记录,例如更改了特定文件的提交记录等。因此,当执行以下操作时:
git log --oneline master..@ -- path/to/frobnitz
不要看到:
12ca6d863 foo
6166da1fd bar
894567343 baz
我会看到类似这样的东西:
46984ad11 (HEAD -> master) git is fun!
2e11a5382 cool beans
>> 12ca6d863 foo
60069036d whatever
d698663d0 something
>> 6166da1fd bar
3d2c811e3 more cool stuff
>> 894567343 baz
3d2c811e3 cool stuff
此外,理想的解决方案应该与--graph
模式一起使用,因为我也想看到所选提交的合并和分支上下文。
我还注意到,git log
支持各种历史简化场景,在某些情况下可以实现我想要的结果,但很难弄清楚如何做,而且并不完全符合我的要求。我已经有了我想要看到的历史记录,并且我已经有了我想要突出显示的提交。
我有一些想法,但都不太满意:
将它脚本化--运行两个git日志,然后使用其中一个的输出来装饰/操作另一个。这种方法的缺点是它很容易出错,并且对于我可能提供给目标日志的不同选项集合,它不会很好地工作,例如
--graph
对于“已选择”的提交,将临时引用(例如
selectedcommits
)分配给它们,然后使用--decorate-refs=selectedcommits
来显示相关提交。这看起来很混乱。