我如何查看按其提交ID分组的分支名称

时间:2018-08-15 16:32:11

标签: git git-branch

我正在一个有多个分支的项目中,并且我为同一提交创建了多个分支名称(以尝试合并策略和重新基准化的特定效果)。例如,我有一组提交,从git log --graph的行中应用了--pretty=format看到:

| | | * 253701d 2018-08-14 (origin/LAADS-1611, LAADS-1647.premerge, LAADS-1647, LAADS-1611.test, LAADS-1611) LAADS-1647 Disable debugging (may be useful later)

我可以看到在此提交中我全部有4个本地分支。

我想做的是在执行git branch --list时将它们全部分组在一起。到目前为止,我最好的是此输出:

git branch --list --verbose LAADS-1439 2f10b40 LAADS-1596 Change to support module integration LAADS-1611 253701d LAADS-1647 Disable debugging (may be useful later) LAADS-1611.premerge e39c749 LAADS-1611 Document dependencies in Build.PL LAADS-1611.test 253701d LAADS-1647 Disable debugging (may be useful later) LAADS-1613 02885e0 Update .gitlab-ci.yml LAADS-1613.rebase.2 307cdc9 Update .gitlab-ci.yml * LAADS-1613.squashes 307cdc9 Update .gitlab-ci.yml LAADS-1613.test 02885e0 Update .gitlab-ci.yml LAADS-1647 253701d LAADS-1647 Disable debugging (may be useful later) LAADS-1647.checkpoint a97e736 LAADS-1611 Bug Fix: Only resolve symlinks for dirs LAADS-1647.premerge 253701d LAADS-1647 Disable debugging (may be useful later) master ac23a63 Merge branch 'nrt' into 'master'

因此,我可以选择并发分支与工作,但这并不容易。我想我可以将所有内容通过管道传输到Unix sort,但似乎我已经错过了它可能已经内置在Git中。

如何查看具有(可能是多个)分支名称的不同提交?

1 个答案:

答案 0 :(得分:1)

在git verions> = 2.7中列出分支时,您可以基于任何字段(包括提交的对象名(sha1))对结果进行排序。

git branch --list --verbose --sort objectname

在最新版本(>=2.13.2)中,您可以像直接在git for-each-branch上在git branch上一样使用format选项来自定义输出。

如果您使用的是旧版本,最好将其通过管道cutsort进行处理,这样至少可以将它们正确地分组(对十六进制数字进行排序不起作用)。 / p>

git branch --list --verbose | cut -b 3- | sort -k2,2