Git reflog图形展示?

6
有没有办法显示带有reflog引用的git日志图像,比如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引用。
也许这是因为您不能同时处理祖先和reflog的限制?尽管如此,似乎仍然有一种方法可以遍历reflog 5个条目,然后将这些引用与标签一起提供给git log --graph
1个回答

8
也许这是一种限制,因为在同一命令中无法遍历继承关系和reflog?
确切的说。
主要问题在于如果Git找不到装饰符,它只能将这些标签装饰符(普通装饰符%d或reflog选择器装饰符%gD)添加到提交中。为了使%d装饰符起作用,Git始终读取所有分支,标记和其他引用名称。但是为了使%gD起作用,Git必须读取Reflog条目,除非您使用--walk-reflogs(或简称-g),否则它根本不会读取Reflog条目。一旦您使用了-g,它会读取Reflogs,但停止遍历提交图形。
从格式指令中获取%gD,Git并没有根本性的理由不能读取所有Reflog,以便可以添加这些修饰符,但现在它还没有这样做。
解决第一个问题后会出现另一个同等重要的问题:不能将-graph与-no-walk结合使用,而-walk-reflogs意味着-no-walk(它们是独立的内部漫步功能,生成图形代码严重依赖使用历史漫步器而不是Reflog漫步器)。
(在当前的Git中,你最好解析git log的输出,同时自己阅读所有Reflog值。然后,您可以编写自己的代码添加Reflog标签。)

但是还有另一个问题,就是分支可以在提交定义之后被添加或删除,这不会导致额外的问题吗? - Christoph
@Christoph:确实可以随时添加或删除分支名称。这只是更改可用于提交的装饰集,或者在某些情况下(当您删除名称时)使一些提交哈希 ID 无法找到(之后它们最终会被垃圾回收)。 - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接