代码之家  ›  专栏  ›  技术社区  ›  Makis

显示Git分支结构

  •  34
  • Makis  · 技术社区  · 14 年前

    有没有办法只显示Git中的分支结构?有许多工具以图形方式显示提交,但在我的例子中,列表太长,无法看到结构。我猜git log可能是答案,但是我找不到任何只显示分支提交的开关。这和“图形——分支——单行——所有”一起可以达到目的。

    6 回复  |  直到 14 年前
        1
  •  38
  •   Community Lee Campbell    7 年前

    我不知道你所说的“分支结构”是什么意思。
    git log 可以帮助可视化通过提交生成的分支(参见下面的 blog post ):

    [alias]
        lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    
    git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
    

    alt text

    但如果你只想要不同的头枝,你可以试试 something along the lines of :

    heads = !"git log origin/master.. --format='%Cred%h%Creset;%C(yellow)%an%Creset;%H;%Cblue%f%Creset' | git name-rev --stdin --always --name-only | column -t -s';'"
    

    (使用 column command ,此处仅用于自上次 origin/master 提交)

    注: Jakub Narębski 建议添加选项 --simplify-by-decoration ,请参见 his answer .

        2
  •  32
  •   Community Lee Campbell    7 年前

    也许你想要的是 --simplify-by-decoration 选项,请参见 git log 文档:

    --通过装饰简化

    选择由某个分支或标记引用的提交。

    是的

    git log --graph --simplify-by-decoration --all
    

    或跟随 VonC answer

    git log --graph --simplify-by-decoration \
       --pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
       --abbrev-commit --date=relative
    
        3
  •  9
  •   Benjol    14 年前

    也许我遗漏了什么,但似乎没人提起 gitk --all 但是。

        4
  •  6
  •   cmcginty    14 年前

    基本解决方案是:

    git log --graph --all
    

    如果你想变得更花哨:

    git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"
    
        5
  •  3
  •   Azat Ibrakov    6 年前

    gitx

    smartgit 对于macOS或Windows(但我没有使用过)

    git-gui 使用本机git gui(跨平台)

        6
  •  2
  •   Emil Sit    14 年前

    git wtf http://git-wt-commit.rubyforge.org/

    它生成如下摘要信息:

    $ git wtf
    Local branch: master
    [x] in sync with remote
    Remote branch: origin/master (git@gitorious.org:willgit/mainline.git)
    [x] in sync with local
    
    Feature branches:
    { } origin/experimental is NOT merged in (1 commit ahead)
        - some tweaks i'm playing around with [80e5da1]
    { } origin/dont-assume-origin is NOT merged in (1 commit ahead)
        - guess primary remote repo from git config instead of assuming "origin" [23c96f1]