Frage Ziemlich Git Verzweigung Graphen


Ich habe einige Bücher und Artikel gesehen, die wirklich hübsche Grafiken von Git-Zweigen und Commits enthalten. Wie kann ich qualitativ hochwertige, druckbare Bilder von git history erstellen?


978
2018-06-29 10:12


Ursprung


Antworten:


Update: Diese Antwort hat viel mehr Aufmerksamkeit bekommen, als sie verdient. Es wurde ursprünglich veröffentlicht, weil ich denke, dass die Diagramme gut aussehen und sie in Illustrator für eine Veröffentlichung überstrichen werden könnten - und es gab keine bessere Lösung. Aber es gibt jetzt viel mehr anwendbare Antworten auf dieses Q, wie Frazist, Jubobs', oder Harry LeeIst's! Bitte geh diese hoch !!

Update 2: Ich habe eine verbesserte Version dieser Antwort auf die Visualisierung der Branch-Topologie in Git Frage, da es dort viel geeigneter ist. Diese Version enthält  lg3, das sowohl die Autor- als auch die Committer-Info anzeigt, also sollten Sie es sich unbedingt ansehen. Ich lasse diese Antwort für historische Gründe (& rep, ich gebe es zu) zurück, obwohl ich wirklich versucht bin, sie einfach zu löschen.

2 ¢: Ich habe zwei Aliase, die ich normalerweise in meine werfen ~/.gitconfig Datei:

[alias]
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"

git lg/git lg1 sieht aus wie das:
git lg1

und git lg2 sieht aus wie das:
git lg2


1520
2018-01-31 04:22



Viele der Antworten hier sind großartig, aber für diejenigen, die nur eine einfache Zeile auf den Punkt antworten wollen, ohne Aliases oder etwas extra einrichten zu müssen, hier ist es:

git log --all --decorate --oneline --graph

Nicht jeder würde die ganze Zeit ein Git Protokoll machen, aber wenn du es brauchst, erinnere dich einfach: " Ein Hund "= Gitprotokoll -einll -dÖko -Onein -GRaph

enter image description here


550
2018-01-29 00:50



Für Textausgabe können Sie versuchen:

git log --graph --abbrev-commit --decorate --date=relative --all

oder:

git log --graph --oneline --decorate --all

oder: hier ist  ein Graphviz-Alias ​​zum Zeichnen des DAG-Graphen.

Ich persönlich benutze gitx, gitk --all und gitnub.


290
2018-06-29 22:25



Gitgraph.js erlaubt es, hübsche Git Zweige ohne ein Repository zu zeichnen. Schreiben Sie einfach einen JavaScript-Code, der Ihre Zweige und Commits konfiguriert und im Browser rendert.

var gitGraph = new GitGraph({
   template: "blackarrow",
   mode: "compact",
   orientation: "horizontal",
   reverseArrow: true
});

var master = gitGraph.branch("master").commit().commit();
var develop = gitGraph.branch("develop").commit();
master.commit();
develop.commit().commit();
develop.merge(master);

sample graph generated with Gitgraph.js

oder mit metro Vorlage:

GitGraph.js metro theme

oder mit Commit-Nachrichten, Autoren und Tags:

GitGraph with commit messages

Teste es mit JSFidel.

Erzeuge es mit Git-Grapher von @bsara.


183
2018-06-08 14:40



Erbaut auf TikZ & PGF, gitdags ist ein kleines LaTeX-Paket, mit dem Sie mühelos Vektorgrafiken erstellen können.

Automatische Generierung eines Commit-Diagramms eines vorhandenen Repositorys nicht der Zweck von gitdags; die Graphen, die es produziert, sind nur für bildungs ​​Gründe.

Ich verwende es oft, um Graphen für meine Antworten auf Git-Fragen als Alternative zu ASCII-Commit-Graphen zu erstellen:

Hier ist ein Beispiel für eine solche Grafik, die die Auswirkungen einer einfachen Rebase demonstriert:

enter image description here

\documentclass{article}

\usepackage{subcaption}
\usepackage{gitdags}

\begin{document}

\begin{figure}
  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      % Commit DAG
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C,
          D -- E,
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}     % node name and text 
        {above=of E} % node placement
        {E}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{Before\ldots}
  \end{subfigure}

  \begin{subfigure}[b]{\textwidth}
    \centering
    \begin{tikzpicture}
      \gitDAG[grow right sep = 2em]{
        A -- B -- { 
          C -- D' -- E',
          {[nodes=unreachable] D -- E },
        }
      };
      % Tag reference
      \gittag
        [v0p1]       % node name
        {v0.1}       % node text
        {above=of A} % node placement
        {A}          % target
      % Remote branch
      \gitremotebranch
        [origmaster]    % node name
        {origin/master} % node text
        {above=of C}    % node placement
        {C}             % target
      % Branch
      \gitbranch
        {master}      % node name and text 
        {above=of E'} % node placement
        {E'}          % target
      % HEAD reference
      \gitHEAD
        {above=of master} % node placement
        {master}          % target
    \end{tikzpicture}
    \subcaption{\ldots{} and after \texttt{git rebase origin/master}}
  \end{subfigure}
  \caption{Demonstrating a typical \texttt{rebase}}
\end{figure}

\end{document}

96
2017-08-24 04:14



Gitg ist ein Klon von Gitk und GitX für GNOME (es funktioniert auch auf KDE usw.), der ein ziemlich farbiges Diagramm zeigt.

Es ist aktiv entwickelt (Stand 2012). Sie können die Commits (Graphknoten) entweder chronologisch sortieren oder topologischund verbirgt Commits, die nicht zu einem ausgewählten Zweig führen.

Es funktioniert gut mit großen Repositories und komplexen Abhängigkeitsgraphen.

Beispiel-Screenshots mit den Repositories linux-git und linux-2.6:

linux-git

linux-2.6


72
2017-11-01 23:35



SourceTree ist ein wirklich guter. Es wird ein gut aussehender und mittelgroßer Verlaufs- und Verzweigungsgraph ausgedruckt: (das Folgende wird in einem experimentellen Git-Projekt gemacht, nur um einige Zweige zu sehen). Unterstützt Windows 7+ und Mac OS X 10.6+.

enter image description here

http://www.sourcetreeapp.com/


57
2017-09-17 00:52



Ich habe gerade ein Tool geschrieben, das mit HTML / Canvas ein hübsches Git-Commits-Diagramm erzeugen kann.

Und bieten ein jQuery-Plugin, das es einfach zu bedienen macht.

[GitHub] https://github.com/tclh123/commits-graph

Vorschau:

preview


53
2018-01-14 15:07



git-forest ist ein ausgezeichnetes Perl - Skript, das ich seit über einem Jahr benutze und das ich kaum benutze git log befehle direkt mehr.

Dies sind einige der Dinge, die ich an diesem Skript liebe:

  • Es verwendet Unicode-Zeichen, um die Linien im Graphen zu zeichnen und den Graphlinien ein kontinuierlicheres Aussehen zu geben.
  • Sie können kombinieren --reverse mit der Grafikausgabe, die mit dem regulären nicht möglich ist git log Befehl.
  • Es benutzt git log intern um die Liste der Commits zu ergattern, also alle Optionen, die Sie übergeben git log kann auch an dieses Skript übergeben werden.

Ich benutze einen Alias git-forest wie folgt:

[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"

So sieht die Ausgabe auf einem Terminal aus:

enter image description here


50
2018-03-22 04:50



Basierend auf einem Graphviz-Skript, das ich gefunden habe eine Antwort auf eine verwandte FrageIch habe gehackt ein Ruby-Skript Dies erstellt eine Übersichtsansicht eines Git-Repository. Es elidiert die gesamte lineare Historie und zeigt nur "interessante" Commits, d. H. Solche mit mehreren Eltern, mehreren Kindern oder durch eine Verzweigung oder Markierung angezeigt. Hier ist ein Ausschnitt des Graphen, für den es generiert wird Jquery:

jquery sample

Git-Großbild und ZweigMaster sind ähnliche Werkzeuge, die versuchen, nur die High-Level-Struktur eines Graphen zu zeigen, indem nur angezeigt wird, wie Tags, Zweige, Merges usw. zusammenhängen.

Diese Frage hat einige weitere Optionen.


41
2018-06-11 01:19



Hängt davon ab, wie sie aussahen. ich benutze Gitx das macht Bilder wie dieses:

simple plot

Sie können vergleichen git log --graph vs. gitk auf einem 24-Wege Octopus Merge (ursprünglich von http://clojure-log.n01se.net/date/2008-12-24.html):

24-way git octopus merge. Original URL was <code>http://lwn.net/images/ns/kernel/gitk-octopus.png</code>


36
2018-06-29 15:37