If I have n git branches, how do I easily show the relationship between these branches?
Basically I am interested in seeing a tree of a subset of all the branches in my repository. I am however not interested in all the intermediate commits.
E.g.: My repository looks like this:
o---o--o A
/ /
o--o--o--o--o--o B
\ \ \
\ o--o C \
\ \ \
o--o--o--o--o--o D
But probably way more complicated. Now I want to see the relationship between branch A, C and D. Something along the lines of:
o A
/
o--o--o
\ \
o---o C
\
o--o D
Or an equivalent overview. Is this possible, and how? (A graphical tool will be just fine.)
Solution
Based on Antoine Pelisses answer, the below line seems to do (almost) exactly what I want:
git log --graph --decorate --oneline --simplify-by-decoration A B C
Update
Mark Longair points out in his answer below that gitk accepts the same parameters as git rev-list, so it is possible to do:
gitk --simplify-by-decoration A C D
You can give this a try:
git log --graph --all --decorate --simplify-by-decoration
It will only show commits that are branch heads or tagged.
I would use:
gitk A C D
... there are probably other git GUIs that produce a prettier rendering of the commit graph, but I've always found gitk fine for this purpose. All the branches and tags are labelled in the "London Underground"-style representation:

(source: mark at mythic-beasts.com)
You can also use the --simplify-by-decoration option to gitk, since it understands all of the parameters that git rev-list does, for example:
gitk --simplify-by-decoration A C D
来源:https://stackoverflow.com/questions/5298972/relationship-between-n-git-branches