n git分支之间的关系

Bja*_*sen 29 git branch git-branch

如果我有n个git分支,我如何轻松地显示这些分支之间的关系?

基本上我有兴趣看到我的存储库中所有分支的子集的树.然而,我对所有中间提交都不感兴趣.

例如:我的存储库看起来像这样:

     o---o--o A
    /      /
o--o--o--o--o--o B
 \  \        \
  \  o--o C   \
   \     \     \
    o--o--o--o--o--o D
Run Code Online (Sandbox Code Playgroud)

但可能更复杂.现在我想看看分支A,C和D之间的关系.有些东西:

     o A
    /
o--o--o
   \   \
    o---o C
         \
          o--o D
Run Code Online (Sandbox Code Playgroud)

或者等效的概述.这有可能,怎么样?(图形工具就好了.)

根据Antoine Pelisses的答案,下面的行似乎(几乎)完全符合我的要求:

git log --graph --decorate --oneline --simplify-by-decoration A B C
Run Code Online (Sandbox Code Playgroud)

更新

Mark Longair在下面的答案中指出gitk接受相同的参数git rev-list,因此可以这样做:

gitk --simplify-by-decoration A C D
Run Code Online (Sandbox Code Playgroud)

Ant*_*sse 44

你可以尝试一下:

git log --graph --all --decorate --simplify-by-decoration
Run Code Online (Sandbox Code Playgroud)

它只显示分支头或标记的提交.

  • @bjarkef:你可以 - 只需将`--all`改为`ACD` (4认同)
  • 这看起来非常好。添加 `--oneline` 对我有一点帮助。现在,如果我只能选择所有分支的子集就好了。:) (2认同)

Mar*_*air 17

我会用:

gitk A C D
Run Code Online (Sandbox Code Playgroud)

...可能还有其他的git GUI可以生成更漂亮的提交图表,但我总是觉得gitk这很好.所有分支和标签都标有"伦敦地铁"式表示:

gitk的屏幕截图显示了几个合并和分支http://mythic-beasts.com/~mark/gitk-screenshot.png


您也可以使用--simplify-by-decoration选项gitk,因为它可以理解所有参数,git rev-list例如:

gitk --simplify-by-decoration A C D
Run Code Online (Sandbox Code Playgroud)

带有--simplify-by-decoration选项的gitk屏幕截图

  • 对.我认为如果这是一个复杂的案例,我可能只关心特定分支是否已经合并到另一个分支并使用命令行工具来探索它.我想有人可能已经删除了你的问题的评论,建议使用`git branch --contains C`来实现这个目的,这确实非常有用 - 它向你展示了包含分支C的提示的所有分支(因此包含分支C)的完整历史. (2认同)
  • @bjarkef:作为一个额外的注释,我应该指出你也可以使用带有gitk的--simplify-by-decoration选项 - 我已经更新了我的答案. (2认同)