Симпатичные графы веток - PullRequest
1193 голосов
/ 29 июня 2009

Я видел, что в некоторых книгах и статьях есть действительно симпатичные графики веток и коммитов git. Как я могу сделать высококачественные печатные изображения из истории git?

Ответы [ 31 ]

11 голосов
/ 06 января 2016
git -c core.pager='less -SRF' log --oneline --graph --decorate

Это мой окончательный вариант, похожий на многие ответы здесь. Мне нравится настраивать флаги, передаваемые на less, чтобы предотвратить перенос слов.

example output

Я установил псевдоним для быстрого доступа, так как команда немного громоздкая.

10 голосов
/ 04 января 2018

Я предлагаю tig https://github.com/jonas/tig , намного лучший инструмент командной строки для git.

Вы можете использовать homebrew для установки TIG на MacOS:

$ brew install tig
$ tig

enter image description here

10 голосов
/ 29 июня 2009

Вы пробовали gitk или gitk --all? Однако он не имеет функции печати / сохранения img в качестве функции.

6 голосов
/ 25 марта 2016

Попробуйте Дитаа . Он может преобразовать любую диаграмму ASCII в изображение. Хотя он не был разработан с учетом веток Git, я был впечатлен результатами.

Источник (текстовый файл):

        +--------+
        | hotfix |
        +---+----+
            |
--*<---*<---*
       ^ 
       |
       \--*<---*
               |
           +---+----+
           | master |
           +--------+

Команда:

java -jar ditaa0_9.jar ascii-graph.txt

Результат:

enter image description here

Он также поддерживает цвета фона, пунктирные линии, различные формы и многое другое. См. примеры .

6 голосов
/ 02 июня 2011

В качестве одной из демонстраций библиотеки веб-графики Raphael представлена ​​классный граф коммитов Git.

Демонстрация является статической, но она должна быть достаточно простой, чтобы взять код и обменять их статические данные на живой набор данных - я думаю, что это просто данные Git commit в формате JSON.

Демо здесь: http://dmitrybaranovskiy.github.io/raphael/github/impact.html

5 голосов
/ 29 июня 2009

Я не знаю о прямом инструменте, но, возможно, вы можете взломать скрипт для экспорта данных в точечный формат и рендеринга с помощью graphviz.

4 голосов
/ 18 июня 2018

некоторые псевдонимы в ~ / .oh-my-zsh / plugins / git / git.plugin.zsh

gke='\gitk --all $(git log -g --pretty=%h)'
glg='git log --stat'
glgg='git log --graph'
glgga='git log --graph --decorate --all'
glgm='git log --graph --max-count=10'
glgp='git log --stat -p'
glo='git log --oneline --decorate'
glog='git log --oneline --decorate --graph'
gloga='git log --oneline --decorate --graph --all'
glol='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit'
glola='git log --graph --pretty='\''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\'' --abbrev-commit --all'
4 голосов
/ 05 октября 2014

Для пользователей OSX, я взял пример @gospes и немного изменил его для gsed (gnu-sed установлен через homebrew) и отрегулировал цвета (для работы с черным фоном, не зная, как исходный пример мог отрисовать как в примере, так как он указывает черный текст на терминале с черным фоном).

[alias]
    # tree, vtree, stree support
    logx = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset)+%C(bold black)(%cr)%C(reset)+%C(auto)%d%C(reset)++\n+++       %C(bold black)%an%C(reset)%C(bold black): %s%C(reset)'
    tree = log --all --graph --decorate=short --color --format=format:'%C(bold blue)%h%C(reset) %C(auto)%d%C(reset)\n         %C(bold black)[%cr]%C(reset)  %x09%C(bold black)%an: %s %C(reset)'
    stree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
        timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
        timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
        printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"\"; \
    done < <(git logx && echo);"' | less -r
    vtree = !bash -c '" \
    while IFS=+ read -r hash time branch message; do \
      timelength=$(echo \"$time\" | gsed -r \"s:[^ ][[]([0-9]{1,2}(;[0-9]{1,2})?)?m::g\"); \
      timelength=$(echo \"16+${#time}-${#timelength}\" | bc); \
      printf \"%${timelength}s    %s %s %s\n\" \"$time\" \"$hash\" \"$branch\" \"$message\"; \
    done < <(git logx && echo);"' | less -r

Ключ для OSX - сначала установить gnu sed (которая имеет опцию -r). Проще всего это сделать с помощью homebrew, который не будет перезаписывать установленный системой sed, но вместо этого установит gnu sed как "gsed". Надеюсь, это поможет @ SlippD. Thompson, который прокомментировал выше о том, что OSX не работает.

3 голосов
/ 05 февраля 2019

Если ваш репозиторий находится на Gitlab, вы можете использовать его графическое представление, так как оно отображается в вашем браузере как SVG.

  • Перейти к графическому представлению вашего репозитория, например, https://gitlab.com/gitlab-org/gitter/webapp/network/develop

  • Прокрутить график вниз до дна (ленивая загрузка фиксирует!)

  • Используйте инспектор вашего браузера, чтобы скопировать элемент SVG в новый файл

  • Откройте его в выбранном вами рендерере, например, Inkscape

enter image description here

2 голосов
/ 22 марта 2018

Глядя на этот разговор попытался использовать мой любимый git-cola & git-dag. Выполнение View->DAG... из git-cola и замена Log: master -- на --all показывает симпатичный график со всеми ветвями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...