Отображение структуры ветвления Git

Есть ли способ показать только структуру ветвей в Git? Существует ряд инструментов, которые отображают коммиты графически, но в моем случае список так длинный, что невозможно увидеть структуру. Я предполагаю, что git -log может быть ответом, но я не могу найти никаких переключателей, которые показывают только ветвящиеся коммиты. Это вместе с "-graph -branches -oneline -all" может сделать трюк.

EDIT: Я ищу способ сделать это в Ubuntu.

Ответ 1

Я не уверен, что вы подразумеваете под "отраслевой структурой".
git log может помочь визуализировать ветки, созданные через коммиты (см. сообщение в блоге):

[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

Но если вам нужны только разные ветки HEAD, вы можете попробовать что-то вроде строк:

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 commit)

Примечание: Jakub Narębski рекомендует добавить опцию --simplify-by-decoration, см. его ответ.

Ответ 2

Возможно, вам нужна опция --simplify-by-decoration, см. git журнал:

- упрощать-на-украшение

    Выбраны фиксации, относящиеся к какой-либо ветки или тегу.

Итак, это будет

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

Основное решение:

git log --graph --all

Если вы хотите получить больше фантазии:

git log --graph --all --pretty=format:"%Cblue%h%Creset [%Cgreen%ar%Creset] %s%C(yellow)%d%Creset"

Ответ 4

Может, мне что-то не хватает, но никто, похоже, не упомянул gitk --all.

Ответ 5

gitx, если вы находитесь на mac

smartgit для mac и или Windoze (но я его не использовал)

git-gui, затем для Ubuntu

Ответ 6

Чтобы получить дополнительную информацию о том, как конкретная ветка относится к другим ветвям вашего репозитория и пультов, вы можете использовать git wtf, который является добавлением в script Уильямом Морганом: http://git-wt-commit.rubyforge.org/

Он создает сводную информацию, например:

$ git wtf
Local branch: master
[x] in sync with remote
Remote branch: origin/master ([email protected]: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]

(пример, взятый из вышеуказанного URL-адреса).