Question Graphiques de branche Pretty git


J'ai vu des livres et des articles avec de très jolis graphes de branches et de commits git. Comment puis-je créer des images imprimables de haute qualité de l'histoire git?


978
2018-06-29 10:12


origine


Réponses:


Mise à jour: Cette réponse a reçu beaucoup plus d'attention qu'elle ne le mérite. Il a été publié à l'origine parce que je pense que les graphiques sont beaux et qu'ils pourraient être dessinés dans Illustrator pour une publication - et il n'y avait pas de meilleure solution. Mais il existe maintenant beaucoup plus de réponses applicables à ce Q, tels que fraczde, Jubobs', ou Harry Leec'est! S'il vous plaît aller upvote ceux-là !!

Mise à jour 2: J'ai posté une version améliorée de cette réponse à la Visualisation de la topologie de branche dans git question, car il est beaucoup plus approprié là-bas. Cette version inclut  lg3, qui affiche à la fois l'auteur et l'info du committer, donc vous devriez vraiment le vérifier. Laissant cette réponse pour des raisons historiques (& rep, j'avoue), bien que je suis vraiment tenté de le supprimer.

2 ¢: J'ai deux alias que je jette normalement dans mon ~/.gitconfig fichier:

[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 ressemble à ça:
git lg1

et git lg2 ressemble à ça:
git lg2


1520
2018-01-31 04:22



Beaucoup de réponses ici sont géniales, mais pour ceux qui veulent juste une ligne simple, répondez sans avoir à configurer d'alias ou quoi que ce soit d'autre, la voici:

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

Pas tout le monde ferait un journal git tout le temps, mais quand vous en avez besoin rappelez-vous juste: " Un chien "= git log -unell --écorcer -oneline -graph

enter image description here


550
2018-01-29 00:50



Pour la sortie textuelle, vous pouvez essayer:

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

ou:

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

ou: voici  un alias graphviz pour dessiner le graphe DAG.

J'utilise personnellement gitx, gitk --all et gitnub.


290
2018-06-29 22:25



Gitgraph.js permet de dessiner de jolies branches git sans référentiel. Il suffit d'écrire un code Javascript qui configure vos branches et les valide et les affiche dans le navigateur.

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

ou avec metro modèle:

GitGraph.js metro theme

ou avec des messages de validation, des auteurs et des tags:

GitGraph with commit messages

Testez avec JSFiddle.

Générer avec Git Grapher par @bsara.


183
2018-06-08 14:40



Construit au sommet de TikZ et PGF, gitdags est un petit paquet LaTeX qui vous permet de produire sans effort des graphiques de validation de graphiques vectoriels, et plus encore.

La génération automatique du graphique de validation d'un référentiel existant est ne pas le but de gitdags; les graphiques qu'il produit sont uniquement destinés à un but éducatif.

Je l'utilise souvent pour produire des graphiques pour mes réponses aux questions Git, comme une alternative aux graphiques de validation ASCII:

Voici un exemple d'un tel graphique démontrant les effets d'une rebase simple:

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 est un clone de Gitk et GitX pour GNOME (il fonctionne aussi sur KDE etc.) qui montre un graphe assez coloré.

Il est activement développé (à partir de 2012). Il vous permet de trier les commits (nœuds graphiques) soit chronologiquement, soit topologiquement, et masquer les validations qui ne mènent pas à une branche sélectionnée.

Cela fonctionne bien avec les grands dépôts et les graphiques de dépendance complexes.

Exemples de captures d'écran montrant les dépôts linux-git et linux-2.6:

linux-git

linux-2.6


72
2017-11-01 23:35



SourceTree est vraiment très bon. Il imprime un graphique d'historique et de branche de bonne taille et de taille moyenne: (ce qui suit est fait sur un projet Git expérimental juste pour voir quelques branches). Prend en charge Windows 7+ et Mac OS X 10.6+.

enter image description here

http://www.sourcetreeapp.com/


57
2017-09-17 00:52



Je viens d'écrire un outil qui peut générer de jolis graphes de commit git en utilisant HTML / Canvas.

Et fournissez un plugin jQuery qui le rendra facile à utiliser.

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

Aperçu:

preview


53
2018-01-14 15:07



git-forest est un excellent script perl que j'utilise depuis plus d'un an et j'utilise à peine le git log commande directement plus.

Voici quelques-unes des choses que j'aime dans ce script:

  • Il utilise des caractères Unicode pour dessiner les lignes dans le graphique donnant un aspect plus continu aux lignes du graphique.
  • Vous pouvez combiner --reverse avec la sortie graphique, ce qui n'est pas possible avec le régulier git log commander.
  • Il utilise git log en interne pour récupérer la liste des commits, donc toutes les options que vous passez à git log peut également être passé à ce script.

J'ai un alias en utilisant git-forest comme suit:

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

Voici à quoi ressemble la sortie sur un terminal:

enter image description here


50
2018-03-22 04:50



Basé sur un script Graphviz que j'ai trouvé dans une réponse à une question connexeJ'ai hacké un script ruby Cela crée une vue récapitulative d'un dépôt git. Il élimine toute l'histoire linéaire et montre juste des commits "intéressants", c'est-à-dire ceux avec plusieurs parents, plusieurs enfants, ou pointés par une branche ou une étiquette. Voici un extrait du graphique qu'il génère pour jquery:

jquery sample

git-big-picture et BranchMaster sont des outils similaires qui essaient de ne montrer que la structure de haut niveau d'un graphe, en affichant uniquement la relation entre les tags, les branches, les fusions, etc.

Cette question a quelques options supplémentaires.


41
2018-06-11 01:19