Git reflog图?

cam*_*ous 3 git

有什么方法可以显示带有 reflog 引用的 git log 图mybranch@{N}吗?在执行 rebase 以在图表中查看分支的先前和当前版本后,这将很有用。基本上我想要的(我认为)是git log --graph --walk-reflogs mybranch但是这给了我一个错误fatal: cannot combine --walk-reflogs with history-limiting options

我可以非常接近,git log --graph --reflog mybranch但不会显示像mybranch@{1}.

也许这是一个限制,因为您不能在同一个命令中遍历祖先和引用日志?尽管如此,似乎应该有一种方法可以遍历 reflog 5 个左右的条目并将这些带有标签的引用提供给git log --graph.

tor*_*rek 5

也许这是一个限制,因为您不能在同一个命令中遍历祖先和引用日志?

完全正确。

这里的主要问题是 Git 只能将这些标签装饰器(%d用于普通装饰,或%gD用于 reflog 选择器装饰)添加到提交中,前提是它可以找到装饰器。为了让%d装饰器工作,Git总是读取所有分支和标签以及其他引用名称。但是为了%gD工作,Git 必须读取 reflog 条目,除非您使用--walk-reflogs(或-g简称),否则它根本不读取 reflog 条目。一旦你使用-g,但它确实读reflogs,但停止行走提交图表。

如果%gD出现在格式化指令中,Git 没有任何根本原因无法读取所有引用日志,因此它可以添加这些装饰器,但今天不能。

如果您解决第一个问题,则会出现一个单独但同样重要的问题:--graph不能与--no-walk--walk-reflogs暗示结合--no-walk(它们是单独的内部步行函数,图形生成代码在很大程度上依赖于使用历史步行器,而不是reflog 步行者)。

(您可以使用当前 Git 做的最好的事情是解析来自 的输出git log,同时自己读取所有引用日志值。然后您可以编写自己的代码来添加引用日志标签。)