git能否以易于解析的方式生成分支树?

时间:2018-06-07 07:37:32

标签: git

我有一个Git别名,可以有效地运行以下命令:

git log \
    --graph \
    --simplify-by-decoration \
    --ancestry-path \
    --format='%d' \
    $(git for-each-ref \
        --contains=@ \
        --format='%(refname)' \
        refs/heads \
    | xargs -I{} echo @..{} \
    )

此命令呈现一个分支树,它是HEAD的后代。例如

*  (origin/branch-C2, branch-C2)
| *  (origin/branch-C1, branch-C1)
|/  
*  (origin/branch-B, branch-B)
*  (origin/branch-A, branch-A)

这实际上是一种从当前提交中获取分支树的有用方法。使用rev-list可以完成类似的结果(但是我发现使用commit SHA-1时使用起来有点困难并且无法摆脱--format

git rev-list --graph --simplify-by-decoration --ancestry-path --oneline \
    $(git for-each-ref --contains=@ --format='%(refname)' refs/heads | xargs -I{} echo @..{})

以上输出对于人类阅读很有用,但我想以某种方式修改上面的输出,以便更容易解析,这样树可以表示本地分支与之相关的方式彼此。例如,像这样:

branch-A
-branch-B
--branch-C1
--branch-C2

(请注意,示例中没有远程/上游分支。)

我不确定Git中是否有类似的内容,但可以{@ 1}}或git log以某种方式进行配置,还是应该使用棘手的git rev-list命令组合生产这样的分支树?我相信我自己可以使用shell脚本实现这样的过滤器,但是让我先检查一下Git。

也许这个问题应该发布在unix.stackexchange.com上。

0 个答案:

没有答案