J'ai vu que certains livres et articles ont de très jolis graphiques de branches et de commits git. Comment puis-je créer des images imprimables de haute qualité de l'historique Git?
Si vous voulez de haute qualité et imprimable, mon outil ( bit-booster.com/graph.html ) convertit "git log" en SVG. Pour plus d'informations, voir ma réponse .
G. Sylvie Davies
2
Cherchez-vous un outil pour visualiser votre propre historique Git - ou - un outil de création de graphiques qui a un moyen de dessiner de jolies "branches Git"?
Je supprimerais la balise dirigé-acyclic-graphs car cela n'a rien à voir avec cette question
Maksim Dmitriev
Réponses:
1843
Mise à jour: Cette réponse a reçu beaucoup plus d'attention qu'elle ne le mérite. Il a été initialement publié 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 des réponses beaucoup plus applicables à ce Q, comme celles de Fracz , Jubobs ou Harry Lee ! S'il vous plaît, allez les voter !!
Mise à jour 2: j'ai publié une version améliorée de cette réponse à la topologie de la branche Visualisation dans la question git , car elle est beaucoup plus appropriée là-bas. Cette version comprend lg3, qui affiche à la fois les informations sur l'auteur et le committer, vous devriez donc vraiment les vérifier. Laisser cette réponse pour des raisons historiques (& rep, je l'admets), bien que je sois vraiment tenté de la supprimer.
Mon 2 ¢ : J'ai deux alias que je jette normalement dans mon ~/.gitconfigfichier:
Ouais, je le fais. Les couleurs normales et lumineuses / audacieuses sont: Noir #202020/ #555555, Rouge: #5d1a14/ #da4939, Vert: #424e24/ #a5c261, Jaune: #6f5028/ #ffc66d, Bleu: #263e4e/ #6d9cbe, Magenta: #3e1f50/ #a256c7, Cyan: #234e3f/ #62c1a1, et Blanc: #979797/ #ffffff.
Slipp D. Thompson
3
@Turbo: Pour moi, les couleurs sont modifiables dans les paramètres de profil de mon application de terminal (Terminal.app). L'application de terminal que vous utilisez peut ou non prendre en charge la modification des couleurs affichées pour les couleurs ANSI données. De plus, le tiret (em dash, exactement) a été créé avec option-shift- [touche trait d'union moins]. Je suppose que j'ai supposé à tort que toutes les plates-formes actuelles étaient à jour avec Unicode.
Slipp D. Thompson
3
Vos --date=relativeet --abbrev-commitsont redondants car vous utilisez explicitement %cret %h, respectivement.
Très bonne réponse. J'ai modifié la commande pour ressembler davantage à la sortie de --oneline --decorate aveclg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
Craig P. Motlin
1200
Beaucoup de réponses ici sont excellentes, mais pour ceux qui veulent juste une simple ligne à la réponse ponctuelle sans avoir à configurer d'alias ou quoi que ce soit de plus, voici:
git log --all --decorate --oneline --graph
Tout le monde ne ferait pas git logtout le temps, mais quand vous en avez besoin, n'oubliez pas:
" A Dog " = git log - a ll - d ecorate - o neline - g raph
J'aime ces deux-là car ils se répartissent bien entre 'git log' (court) et 'git log' (long), donc je peux appeler la onelineversion courte ( ) la plupart du temps, mais si j'ai besoin de plus de détails, utilisez la version longue avec tous les détails de validation. Ensuite, j'ai deux jolies mappages de <leader>gl(court) et <leader>gll(long) dans Vim.
icc97
253
Gitgraph.js permet de dessiner de jolies branches git sans référentiel. Il vous suffit d'écrire un code Javascript qui configure vos branches et validations et de le rendre dans le navigateur.
Ouais, c'est totalement incroyable! Publié dans fiddle jsfiddle.net/guan1oz1 afin que vous puissiez le tester immédiatement.
berkus
14
Les flèches doivent cependant pointer vers le (s) parent (s), pas vers les enfants.
jub0bs
4
@Jubobs: Bon point. C'est un obstacle commun pour les gens qui essaient de comprendre Git: ils pensent à la séquence de temps plutôt qu'à l'héritage. Faire comprendre que (presque) tout dans git est relatif à quelque chose de précédent aide toutes les autres pièces à se mettre en place.
Slipp D. Thompson
6
Concernant la direction des flèches, à partir des documents: * @param {Boolean} [options.reverseArrow = false] - Faire pointer les flèches vers les ancêtres si vrai
Scott
2
Pour info, après avoir vu ce post et joué avec gitgraph.js, j'ai décidé de créer un petit outil qui met essentiellement une interface utilisateur à gitgraph.js. Ce n'est pas fini, et l'interface utilisateur n'est pas encore là où je veux qu'elle soit, mais les contributions sont les bienvenues! jetez un œil: github.com/bsara/git-grapher
bsara
123
Construit au-dessus de TikZ et PGF , gitdagsest 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 graphe de validation d'un référentiel existant n'est pas le but de gitdags; les graphiques qu'il produit ne sont destinés qu'à des fins éducatives .
Je l'utilise souvent pour produire des graphiques pour mes réponses aux questions Git, comme alternative aux graphiques de validation ASCII:
Voici un exemple d'un tel graphique démontrant les effets d'un simple rebase:
\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}
@Cela a l'air génial! J'aimerais également quelques lignes sur la façon de l'utiliser: considérez un utilisateur Windows qui n'a pas du tout installé LaTeX. Comment produire un graphe à partir de zéro?
VonC
1
@VonC Je ne suis pas sûr, mais si vous ne voulez pas installer LaTeX, vous pourrez peut-être produire vos graphiques sur ShareLatex et WriteLaTeX , et autres. Je vais l'examiner et développer le wiki quand j'aurai plus de temps ... N'hésitez pas à promouvoir le package:)
jub0bs
C'est génial! Je rédigerai un tutoriel à un moment donné, mais pour l'instant, je voulais juste mentionner que vous pouvez post-traiter vos graphiques en utilisant la classe de document autonome (j'utilise la fonction de recadrage), utilisezlatex input.tex pour générer un dvi, puis enfin utiliser dvisvgm input.dvipour générer un SVG avec transparence. La conversion du SVG vers un format raster comme PNG est assez facile avec convert -antialias -density 300 -background none input.svg output.png. Soit dit en passant, ces images sont incroyables avec une transparence totale. Je travaille toujours sur le problème des polices ... i.imgur.com/1Xu2Ry5.png
Gitg est un clone de Gitk et GitX pour GNOME (il fonctionne également sur KDE, etc.) qui montre un joli graphique coloré.
Il est activement développé (à partir de 2012). Il vous permet de trier les validations (nœuds de graphique) de façon chronologique ou topologique et de masquer les validations qui ne mènent pas à une branche sélectionnée.
Cela fonctionne bien avec les grands référentiels et les graphiques de dépendances complexes.
Exemples de captures d'écran, montrant les référentiels linux-git et linux-2.6:
Ça a l'air bien, comment obtenir des données préformatées pour dessiner ce graphique?
Olga
3
@Olga Je viens d'ajouter le code backend à mon repo. Vous pouvez voir ce sur GitHub.
Harry Lee
60
Sourcetree est vraiment bon. Il imprime un bon historique et un graphique de branche et de taille moyenne: (ce qui suit est fait sur un projet expérimental Git juste pour voir quelques branches). Prend en charge Windows 7+ et Mac OS X 10.6+.
Il est également disponible dans l'App Store, donc la mise à jour devrait fonctionner automatiquement.
WebOrCode
J'adore le graphique de sourcetree, mais je préfère utiliser la ligne de commande, et les valeurs par défaut de sourcetree gâchent toujours mes repos.
SgtPooki
SourceTree insiste pour que vous créiez un compte Atlassian (ou utilisez votre compte Google et accordez à Atlassian quelques autorisations pour obtenir vos informations de messagerie et de profil), et après l'installation sur Mac (OS X El Capitan v 10.11.5), il échoue à l'étape de `` connexion '': "fatal: aucun mappage de sous-module trouvé dans .gitmodules pour le chemin '<chemin ignoré>'" et aussi un étrange avertissement: "modèles non trouvés / usr / local / git / share / git-core / templates". Messages très obscurs, pas si bons.
Dmitry Shevkoplyas
3
Et puis, après la désinstallation, n'oubliez pas de nettoyer vos privilèges de sécurité Google que vous avez accordés plus tôt: myaccount.google.com/security -> Applications et sites connectés -> Applications connectées à votre compte -> Gérer les applications
Dmitry Shevkoplyas
56
git-forestest un excellent script perl que j'utilise depuis plus d'un an et j'utilise à peine la git logcommande directement.
Voici certaines des choses que j'aime dans ce script:
Il utilise des caractères unicode pour dessiner les lignes dans le graphique en donnant un aspect plus continu aux lignes du graphique.
Vous pouvez combiner --reverseavec la sortie graphique, ce qui n'est pas possible avec la git logcommande régulière .
Il utilise en git loginterne pour récupérer la liste des validations, de sorte que toutes les options auxquelles vous passez git logpeuvent également être transmises à ce script.
J'ai un alias utilisant git-forestcomme suit:
[alias]
tree = "forest --pretty=format:\"%C(red)%h %C(magenta)(%ar) %C(blue)%an %C(reset)%s\" --style=15 --reverse"
@ void.pointer - Oui, ce ne sera pas le cas car git-forest est un script perl et a des dépendances de module perl. Exécuter git sous cygwin avec les modules perl requis installés pourrait être la meilleure alternative que vous pourriez obtenir si vous le voulez vraiment sur Windows :)
Tuxdude
1
Wow, ce repo a beaucoup d'excellents outils. Merci!
Eldelshell
1
Fonctionne parfaitement bien @MinGW (MSYS) sous Win $; installer CPANM; puis Git.pm; créez un alias et vous êtes prêt à partir.
Sektor
quel est ce très bel émulateur de terminal que vous utilisez? J'aime les choses d'indicateur graphique rapide.
NH.
Comment installer ce "script"? Je suis sur Ubuntu.
Télécharger la sortie de git log --pretty='%h|%p|%d' directement dans l'outil, puis cliquez sur le lien "download graph.svg".
L'outil est purement côté client, et donc aucune de vos données Git n'est partagée avec mon serveur. Vous pouvez également enregistrer le HTML + JS localement et l'exécuter à l'aide des URL "file: ///". Vérifié sur Chrome 48 et Firefox 43 sur Ubuntu 12.04.
Il génère du HTML qui peut être publié directement dans n'importe quelle page (y compris le moteur de blog blogspot!). Jetez un œil à certains des articles de blog ici:
@Jay, il semble que la couleur reflète le niveau d'indentation de cette branche particulière, et que les branches peuvent se déplacer vers une autre colonne et donc changer de couleur.s
Thorbjørn Ravn Andersen
44
Basé sur un script Graphviz que j'ai trouvé dans une réponse à une question connexe , j'ai piraté un script ruby qui crée une vue récapitulative d'un référentiel git. Il efface toute l'histoire linéaire et ne montre que les commits "intéressants", c'est-à-dire ceux avec plusieurs parents, plusieurs enfants, ou pointés par une branche ou une balise. Voici un extrait du graphique qu'il génère pour jquery :
git-big-picture et BranchMaster sont des outils similaires qui essaient de n'afficher que la structure de haut niveau d'un graphique, en affichant uniquement la relation entre les balises, les branches, les fusions, etc.
J'ai essayé, mais je n'ai pas réussi à faire fonctionner correctement dot avec la sortie de notre repo (42 branches, 175 tags, 42.000 commits) ... Dommage ... C'est exactement ce que je cherchais!
Xavier Nodet
1
@XavierNodet, si votre dépôt est public et / ou si vous avez un message d'erreur, etc., veuillez signaler un problème sur GitHub. Merci!
Matt McHenry
38
J'ai ajouté trois commandes personnalisées: git tree, git streeet git vtree. Je vais les parcourir dans cet ordre.
EDIT: Cela fonctionne avec la version 1.9a de git. La valeur de couleur «auto» fait apparemment ses débuts dans cette version. C'est un ajout intéressant car les noms de branche auront une couleur différente. Cela facilite par exemple la distinction entre les succursales locales et distantes.
fatal: bad color value 'auto' for variable '--pretty format':(
Swivel
Il s'est avéré être une ancienne version de git. Yum a une version assez obsolète de Git dans son repo. Compilé à partir de la source (1.9) et cela fonctionne très bien. C'est beau aussi! Merci @gospes!
Pivotant le
Non, allez sur OS X:sed: illegal option -- r
Slipp D. Thompson
@ SlippD.Thompson: J'utilise Linux :). Le -r est pour les expressions régulières étendues. Apparemment, la version OSX de sed ne l'a pas. Vous pourriez peut-être mettre à jour sed. Sinon, vous pouvez simplement réécrire la commande sed sans regex étendu.
gospes
1
Pour le sed de Mac OS X, utilisez -E au lieu de -r
Baxter Lopez
37
Cela dépend de ce à quoi ils ressemblaient. J'utilise gitx qui fait des images comme celle-ci:
C'est drôle ... j'aurais juré que je vous ai entendu dire "fusion octopus 24 voies"!
dty
4
Par curiosité, quelqu'un a-t-il tenté d'extraire les routines de dessin de GitX (ou d'un autre outil graphique GUI) dans un exécutable autonome? Si je ne me trompe pas, faire en sorte que Cocoa dessine dans un fichier PDF vectoriel ne serait pas difficile et satisferait les besoins du PO en images imprimables à Q élevé.
Slipp D. Thompson,
C'était sur S3 via skitch avant de refaire leur truc. J'aimerais bien l'avoir encore. :(
Dustin
Je viens de le remplacer par une version gitk de lwn.net/images/ns/kernel/gitk-octopus.png , liée à clojure-log.n01se.net/date/2008-12-24.html . @Dustin: j'espère que ça va. Ce n'est pas la même image, mais elle sert un objectif similaire. D'après la capture d'écran, il semble que cela fasse partie du noyau linux, donc je suppose que vous pouvez trouver ce commit et reprendre une capture d'écran gitx équivalente ....
naught101
34
Pour une sortie textuelle plus détaillée, veuillez essayer:
Comme vous pouvez le voir, c'est presque une frappe de sauvegarde d'alias, basée sur:
--couleur: look clair
--graph: visualiser les parents
--date-order: look le plus compréhensible au repo
- décorer: qui est qui
--oneline: plusieurs fois tout ce que vous devez savoir sur un commit
- simplifier par décoration: basique pour un premier aperçu (juste des tags, des fusions pertinentes, des branches)
--all: sauvegarde des frappes avec tous les alias avec et sans cette option
--date = relative (% ar): Comprendre l'activité dans le repo (parfois une branche est peu engagée près de master mais il y a des mois de sa part)
Voir dans la version récente de git (1.8.5 et au-dessus), vous pouvez bénéficier de% C (auto) dans la décoration placeholder% d
À partir d'ici, tout ce dont vous avez besoin est une bonne compréhension des gitrevisions pour filtrer tout ce dont vous avez besoin (quelque chose comme master..develop, où --simplify-merges pourrait aider avec les branches à long terme)
La puissance derrière la ligne de commande est la configuration rapide en fonction de vos besoins (comprendre qu'un dépôt n'est pas une configuration de journal de clé unique, donc l'ajout de --numstat, ou --raw, ou --name-status est parfois nécessaire. Ici git log et les alias sont rapides, puissants et (avec le temps) le plus joli graphique que vous pouvez obtenir. Encore plus, avec une sortie affichée par défaut via un pager (dites moins), vous pouvez toujours rechercher rapidement dans les résultats. Pas convaincu? Vous pouvez toujours analyser le résultat avec des projets comme gitgraph
Très agréable. Ajout de ceux-ci à ma config. Mais je recommande de remplacer% Cred% d% Creset par% C (auto)% d% Creset, ce qui donnera différentes couleurs pour les noms de succursales distantes ou locales
Avec cela en place, git lproduira quelque chose comme:
Dans Git 2.12 +, vous pouvez même personnaliser les couleurs de ligne du graphique en utilisant l' log.graphColorsoption de configuration.
Quant au format des logs, il est similaire à --oneline, avec l'ajout du nom de l' auteur (respectant .mailmap) et de la date relative de l'auteur . Notez que la %C(auto)syntaxe, qui indique à Git d'utiliser les couleurs par défaut pour le hachage de validation, etc. est prise en charge dans Git> = 1.8.3 .
Essayez ditaa . Il peut transformer n'importe quel diagramme ASCII en une image. Bien qu'il n'ait pas été conçu en pensant aux branches Git, j'ai été impressionné par les résultats.
Essayez celui-ci github.com/gugod/bin/blob/master/git-graphviz . Je n'avais pas toutes les dépendances dans mon environnement d'entreprise, donc changer ces iocommandes en simples commandes perl `git log [...]` a fonctionné pour moi.
Ross Rogers
Si vous êtes sur un Mac et que vous souhaitez essayer ce script, vous pouvez saisir Perl avec brew install perl dotet ensuite cpan common::sense IO::allobtenir les dépendances. Ensuite, dirigez simplement la sortie vers une commande appropriée, comme git-graphviz | dot -Tpng -o repo.png. Cependant, la sortie n'est pas très différente de git-big-picture .
jrhorn424
6
Il y a un graphique de validation Git génial comme l'une des démos de la bibliothèque graphique Web Raphael .
La démo est statique, mais il devrait être assez facile de prendre le code et d'échanger leurs données statiques pour un ensemble de données en direct - je pense que ce sont juste des données de validation Git au format JSON.
@Sven: Merci de l'avoir signalé. J'ai corrigé les liens rompus pour vous, bien que gardez à l'esprit que cette réponse a cinq ans, et donc il pourrait y avoir une meilleure solution plus récemment.
Une sortie de graphique git agréable et propre pour les coquilles
avec des hachages comme d'habitude à côté de l'arbre graphique
ou dans une colonne supplémentaire
Edit : Vous voulez commencer tout de suite sans lire les explications? Utilisez l'alias git, les extraits de code de script ou de fonction de la section EDIT 5 ci-dessous ou même la manière la plus confortable avec EDIT 6 .
Dans toutes les réponses à cette question, aucune n'a montré jusqu'à présent une sortie propre aux tableaux pour les coquilles. Le plus proche était cette réponse des évangiles d' où je suis parti.
Le point central de mon approche est de ne compter que les caractères d'arbre montrés à l'utilisateur. Remplissez-les ensuite à une longueur personnelle avec des espaces blancs.
Autre que git, vous avez besoin de ces outils
grep
pâte
printf
sed
seq
tr
toilettes
principalement à bord avec n'importe quelle distribution Linux.
L'extrait de code est
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$((9-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(214)%>(15,trunc)%d%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
Pour calculer les espaces nécessaires que nous utilisons
sed -nl1000 'l' <<< "$graph"
pour obtenir tous les caractères (jusqu'à 1000 par ligne) que de sélectionner uniquement les caractères d'arbre: * | / \ _ et espaces avec
grep -Eo '\\\\|\||\/|\ |\*|_'
enfin, comptez-les et soustrayez le résultat de notre valeur de longueur choisie, qui est 9 dans l'exemple.
Pour produire la quantité calculée d'espaces blancs que nous utilisons
seq -s' ' $whitespaces
et tronquer les numéros de position avec
tr -d '[:digit:]'
que de les ajouter à la fin de notre ligne de graphique. C'est ça!
Git a la bonne option pour formater la longueur des spécificateurs de sortie déjà avec la syntaxe '%><(amount_of_characters,truncate_option)', qui ajoute des espaces blancs du côté gauche '>' ou droit '<' et peut tronquer les caractères du début 'ltrunc', du milieu 'mtrunc' ou de la fin «trunc».
Il est important que les cmd printf ci-dessus utilisent les mêmes valeurs de longueur pour la colonne git correspondante.
Amusez-vous à créer votre propre sortie propre à la table selon vos besoins.
Supplémentaire:
Pour obtenir la bonne valeur de longueur, vous pouvez utiliser l'extrait de code suivant
et utilisez $ max_chars comme la bonne valeur de longueur ci-dessus.
EDIT 1 : Je viens de remarquer que le caractère de soulignement est également utilisé dans l'arbre git et modifiez les extraits de code ci-dessus en conséquence. S'il manque d'autres caractères, veuillez laisser un commentaire.
EDIT 2 : Si vous voulez vous débarrasser des crochets autour des entrées de branche et de balise, utilisez simplement "% D" au lieu de "% d" dans la commande git, comme dans EDIT 3.
EDIT 3 : Peut-être que l'option de couleur "auto" est celle que vous préférez le plus pour les entrées de branche et d'étiquette?
Modifiez cette partie de la commande git (couleur 214 )
%C(214)%>(15,trunc)%D%C(reset)
à auto
%C(auto)%>(15,trunc)%D%C(reset)
EDIT 4 : Ou vous aimez votre propre mélange de couleurs pour cette partie, une sortie fantaisie avec une tête clignotante?
Pour pouvoir d'abord styliser les noms de tête, de branche et de balises, nous avons besoin de l'option de couleur "auto" dans notre commande git comme dans EDIT 3.
Ensuite, nous pouvons remplacer les valeurs de couleurs connues par les nôtres en ajoutant ces 3 lignes
# branch name styling
branch=${branch//1;32m/38;5;214m}
# head styling
branch=${branch//1;36m/3;5;1;38;5;196m}
# tag styling
branch=${branch//1;33m/1;38;5;222m}
dans notre extrait de code. Les valeurs de remplacement produisent les couleurs ci-dessus.
Par exemple, la valeur de remplacement pour la tête est
3;5;1;38;5;196
où 3; signifie italique, 5; pour clignoter et 1; 38; 5; 196 pour la couleur. Pour plus d'informations, commencez ici. Remarque: ce comportement dépend de votre terminal préféré et peut donc ne pas être utilisable.
MAIS vous pouvez choisir n'importe quelle valeur de couleur que vous préférez.
VUE D'ENSEMBLE des valeurs de couleur git et équivalents ANSI
Si vous avez besoin de la sortie sur votre console pour des couleurs précises (l'image ci-dessus est réduite par stackoverflow), vous pouvez produire la sortie avec
function git_tably () {
unset branch_all graph_all hash_all message_all time_all max_chars
### add here the same code as under "2) as a shell-script" ###
}
et appelez la fonction git_tably (dérivée de tablelike) directement sous votre chemin de projet git ou d'où vous voulez avec votre chemin de projet git comme premier paramètre.
2) en tant que script shell :
Je l'utilise avec l'option pour lui passer un répertoire de projet git comme premier paramètre ou s'il est vide, prendre le répertoire de travail comme le comportement normal. Dans son intégralité, nous avons
# edit your color/style preferences here or use empty values for git auto style
tag_style="1;38;5;222"
head_style="1;3;5;1;38;5;196"
branch_style="38;5;214"
# determine the max character length of your git tree
while IFS=+ read -r graph;do
chars_count=$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)
[[ $chars_count -gt ${max_chars:-0} ]] && max_chars=$chars_count
done < <(cd "${1:-"$PWD"}" && git log --all --graph --pretty=format:' ')
# create the columns for your prefered tablelike git graph output
while IFS=+ read -r graph hash time branch message;do
# count needed amount of whitespaces and create them
whitespaces=$(($max_chars-$(sed -nl1000 'l' <<< "$graph" | grep -Eo '\\\\|\||\/|\ |\*|_' | wc -l)))
whitespaces=$(seq -s' ' $whitespaces|tr -d '[:digit:]')
# show hashes besides the tree ...
#graph_all="$graph_all$graph$(printf '%7s' "$hash")$whitespaces \n"
# ... or in an own column
graph_all="$graph_all$graph$whitespaces\n"
hash_all="$hash_all$(printf '%7s' "$hash") \n"
# format all other columns
time_all="$time_all$(printf '%12s' "$time") \n"
branch=${branch//1;32m/${branch_style:-1;32}m}
branch=${branch//1;36m/${head_style:-1;36}m}
branch=${branch//1;33m/${tag_style:-1;33}m}
branch_all="$branch_all$(printf '%15s' "$branch")\n"
message_all="$message_all$message\n"
done < <(cd "${1:-"$PWD"}" && git log --all --graph --decorate=short --color --pretty=format:'+%C(bold 214)%<(7,trunc)%h%C(reset)+%C(dim white)%>(12,trunc)%cr%C(reset)+%C(auto)%>(15,trunc)%D%C(reset)+%C(white)%s%C(reset)' && echo);
# paste the columns together and show the tablelike output
paste -d' ' <(echo -e "$time_all") <(echo -e "$branch_all") <(echo -e "$graph_all") <(echo -e "$hash_all") <(echo -e "$message_all")
3) comme alias git :
Le moyen le plus confortable est peut-être d'ajouter un alias git dans votre .gitconfig
EDIT 6 :
En raison de vos votes positifs, j'ai amélioré l'extrait de code. Maintenant, vous pouvez le nourrir avec presque n'importe quelle commande git log et vous n'avez plus besoin d'adapter le code. Essayez!
Comment ça fonctionne?
définir vos commandes git log dans votre .gitconfig comme toujours
définir un numéro de colonne d'arbre positif (facultatif), où le graphique git est affiché
Alors appelez
git tably YourLogAlias
ou
git tably YourLogAlias TreeColNumber
où TreeColNumber écrase une valeur toujours définie d'en haut.
Limitation:
pour chaque spécificateur de votre commande log, vous devez utiliser cette syntaxe
%><(<N>[,ltrunc|mtrunc|trunc])
en plus du dernier et seulement si votre colonne d'arbre choisie ne doit pas être la dernière
Vous devez expliquer dans votre réponse comment ces extraits bash se transformeront en commandes de type journal git fantaisie. On peut trouver des utilisations en regardant la réponse que vous avez liée, mais les réponses devraient être autonomes
Andras Deak
Vous voulez dire que je devrais expliquer le gd log cmd en détail? Ou pourriez-vous me donner un exemple de ce qui vous manque, s'il vous plaît.
onemorequestion
Remarque: La sortie de la commande awesome git log est utilisée par cet extrait pour recevoir la sortie de la table sur un terminal. Donc, l'inverse comme vous l'avez mentionné;)
onemorequestion
J'ai pensé que vous ne tapiez pas 20 lignes de bash chaque fois que vous en avez besoin. Il est logique de définir cela comme une fonction bash ou un alias git. La plupart des lecteurs ne prendront pas la peine d'essayer de compléter votre code pour le rendre facilement utilisable. C'est ce que je voulais dire. Si vous venez de mettre le code dans un fichier sh aléatoire sur votre chemin, vous pouvez m'ignorer.
Andras Deak
1
Je vois. Merci pour votre conseil. Je vais modifier ma réponse et ajouter un tel alias. Normalement, j'utilise des fichiers pour des commandes "longues" comme vous l'avez mentionné. Mais avoir les deux manières écrites ici est beaucoup plus confortable, je suis d'accord.
seule question
5
certains alias dans ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
Pour les utilisateurs OSX, j'ai pris l'exemple @gospes et l'ai légèrement modifié pour gsed ( gnu-sedinstallé via homebrew) et ajusté les couleurs (pour travailler avec un fond noir , je ne sais pas comment l'exemple original pourrait éventuellement rendre la façon dont il le fait dans le exemple car il spécifie du texte noir sur un terminal avec un fond noir).
La clé pour OSX est d'installer d'abord gnu sed (qui a l'option -r). Le plus facilement fait avec homebrew, qui n'écrasera pas le sed installé par le système, mais installera plutôt gnu sed en tant que "gsed". J'espère que cela aide @ SlippD.Thompson qui a commenté ci-dessus que OSX ne fonctionne pas.
Réponses:
Mise à jour: Cette réponse a reçu beaucoup plus d'attention qu'elle ne le mérite. Il a été initialement publié 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 des réponses beaucoup plus applicables à ce Q, comme celles de Fracz , Jubobs ou Harry Lee ! S'il vous plaît, allez les voter !!
Mise à jour 2: j'ai publié une version améliorée de cette réponse à la topologie de la branche Visualisation dans la question git , car elle est beaucoup plus appropriée là-bas. Cette version comprend
lg3
, qui affiche à la fois les informations sur l'auteur et le committer, vous devriez donc vraiment les vérifier. Laisser cette réponse pour des raisons historiques (& rep, je l'admets), bien que je sois vraiment tenté de la supprimer.Mon 2 ¢ : J'ai deux alias que je jette normalement dans mon
~/.gitconfig
fichier:git lg
/git lg1
ressemble à ceci:et
git lg2
ressemble à ceci:la source
#202020
/#555555
, Rouge:#5d1a14
/#da4939
, Vert:#424e24
/#a5c261
, Jaune:#6f5028
/#ffc66d
, Bleu:#263e4e
/#6d9cbe
, Magenta:#3e1f50
/#a256c7
, Cyan:#234e3f
/#62c1a1
, et Blanc:#979797
/#ffffff
.--date=relative
et--abbrev-commit
sont redondants car vous utilisez explicitement%cr
et%h
, respectivement.%C(auto)
modificateur aux refnames (%d
) pour obtenir des couleurs plus agréables. Voir stackoverflow.com/questions/5889878/color-in-git-log/…lg = log --graph --abbrev-commit --decorate --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)%C (reset)' --all
Beaucoup de réponses ici sont excellentes, mais pour ceux qui veulent juste une simple ligne à la réponse ponctuelle sans avoir à configurer d'alias ou quoi que ce soit de plus, voici:
Tout le monde ne ferait pas
git log
tout le temps, mais quand vous en avez besoin, n'oubliez pas:la source
git config --global alias.adog "log --all --decorate --oneline --graph"
--all
si longtemps que je suis sur le point de pleurer (T_T) MERCI!Pour la sortie textuelle, vous pouvez essayer:
ou:
ou: voici un alias graphviz pour dessiner le graphe DAG.
J'utilise personnellement
gitx
,gitk --all
etgitnub
.la source
oneline
version courte ( ) la plupart du temps, mais si j'ai besoin de plus de détails, utilisez la version longue avec tous les détails de validation. Ensuite, j'ai deux jolies mappages de<leader>gl
(court) et<leader>gll
(long) dans Vim.Gitgraph.js permet de dessiner de jolies branches git sans référentiel. Il vous suffit d'écrire un code Javascript qui configure vos branches et validations et de le rendre dans le navigateur.
ou avec
metro
modèle:ou avec des messages de validation, des auteurs et des balises:
Testez-le avec JSFiddle .
Générez-le avec Git Grapher par @bsara.
la source
Construit au-dessus 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 graphe de validation d'un référentiel existant n'est pas le but de
gitdags
; les graphiques qu'il produit ne sont destinés qu'à des fins éducatives .Je l'utilise souvent pour produire des graphiques pour mes réponses aux questions Git, comme alternative aux graphiques de validation ASCII:
Voici un exemple d'un tel graphique démontrant les effets d'un simple rebase:
la source
:)
latex input.tex
pour générer un dvi, puis enfin utiliserdvisvgm input.dvi
pour générer un SVG avec transparence. La conversion du SVG vers un format raster comme PNG est assez facile avecconvert -antialias -density 300 -background none input.svg output.png
. Soit dit en passant, ces images sont incroyables avec une transparence totale. Je travaille toujours sur le problème des polices ... i.imgur.com/1Xu2Ry5.pnggitdags
est en route!Gitg est un clone de Gitk et GitX pour GNOME (il fonctionne également sur KDE, etc.) qui montre un joli graphique coloré.
Il est activement développé (à partir de 2012). Il vous permet de trier les validations (nœuds de graphique) de façon chronologique ou topologique et de masquer les validations qui ne mènent pas à une branche sélectionnée.
Cela fonctionne bien avec les grands référentiels et les graphiques de dépendances complexes.
Exemples de captures d'écran, montrant les référentiels linux-git et linux-2.6:
la source
Je viens d'écrire un outil qui peut générer un joli graphique de commits git en utilisant HTML / Canvas.
Et fournissez un plugin jQuery qui le rend facile à utiliser.
[github] https://github.com/tclh123/commits-graph
Aperçu:
la source
Sourcetree est vraiment bon. Il imprime un bon historique et un graphique de branche et de taille moyenne: (ce qui suit est fait sur un projet expérimental Git juste pour voir quelques branches). Prend en charge Windows 7+ et Mac OS X 10.6+.
la source
git-forest
est un excellent script perl que j'utilise depuis plus d'un an et j'utilise à peine lagit log
commande directement.Voici certaines des choses que j'aime dans ce script:
--reverse
avec la sortie graphique, ce qui n'est pas possible avec lagit log
commande régulière .git log
interne pour récupérer la liste des validations, de sorte que toutes les options auxquelles vous passezgit log
peuvent également être transmises à ce script.J'ai un alias utilisant
git-forest
comme suit:Voici à quoi ressemble la sortie sur un terminal:
la source
J'ai écrit un outil Web pour convertir les journaux git en jolis graphiques SVG: Bit-Booster - Outil de dessin de graphique de validation hors ligne
Télécharger la sortie de
git log --pretty='%h|%p|%d'
directement dans l'outil, puis cliquez sur le lien "download graph.svg".L'outil est purement côté client, et donc aucune de vos données Git n'est partagée avec mon serveur. Vous pouvez également enregistrer le HTML + JS localement et l'exécuter à l'aide des URL "file: ///". Vérifié sur Chrome 48 et Firefox 43 sur Ubuntu 12.04.
Il génère du HTML qui peut être publié directement dans n'importe quelle page (y compris le moteur de blog blogspot!). Jetez un œil à certains des articles de blog ici:
http://bit-booster.blogspot.ca/
Voici une capture d'écran d'un exemple de fichier HTML généré par l'outil:
http://bit-booster.com/graph.html (l'outil)
la source
Basé sur un script Graphviz que j'ai trouvé dans une réponse à une question connexe , j'ai piraté un script ruby qui crée une vue récapitulative d'un référentiel git. Il efface toute l'histoire linéaire et ne montre que les commits "intéressants", c'est-à-dire ceux avec plusieurs parents, plusieurs enfants, ou pointés par une branche ou une balise. Voici un extrait du graphique qu'il génère pour jquery :
git-big-picture et BranchMaster sont des outils similaires qui essaient de n'afficher que la structure de haut niveau d'un graphique, en affichant uniquement la relation entre les balises, les branches, les fusions, etc.
Cette question a plus d'options.
la source
J'ai ajouté trois commandes personnalisées:
git tree
,git stree
etgit vtree
. Je vais les parcourir dans cet ordre.Avec
git stree
etgit vtree
j'ai utilisé bash pour aider au formatage.EDIT: Cela fonctionne avec la version 1.9a de git. La valeur de couleur «auto» fait apparemment ses débuts dans cette version. C'est un ajout intéressant car les noms de branche auront une couleur différente. Cela facilite par exemple la distinction entre les succursales locales et distantes.
la source
fatal: bad color value 'auto' for variable '--pretty format'
:(sed: illegal option -- r
Cela dépend de ce à quoi ils ressemblaient. J'utilise gitx qui fait des images comme celle-ci:
Vous pouvez comparer
git log --graph
vs gitk sur une fusion de poulpe à 24 voies (originellement de http://clojure-log.n01se.net/date/2008-12-24.html ):la source
Pour une sortie textuelle plus détaillée, veuillez essayer:
Vous pouvez écrire un alias dans $ HOME / .gitconfig
la source
Voici mon point de vue sur cette question:
Capture d'écran:
Usage:
git hist
- Afficher l'historique de la branche actuellegit hist --all
- Afficher le graphique de toutes les branches (y compris les télécommandes)git hist master devel
- Montrer la relation entre deux ou plusieurs branchesgit hist --branches
- Afficher toutes les succursales localesAjouter
--topo-order
pour trier les validations topologiquement, au lieu de par date (par défaut dans cet alias)Avantages:
--decorate
, donc avec des couleurs distinctes pour différents noms de brancheInstaller:
la source
gitg : un visualiseur de référentiel basé sur gtk, c'est nouveau mais intéressant et utile
http://git.gnome.org/browse/gitg
Je l'utilise actuellement
la source
GitX
et assez bon à cela. RecommanderBien que parfois j'utilise gitg , revenez toujours en ligne de commande:
Comme vous pouvez le voir, c'est presque une frappe de sauvegarde d'alias, basée sur:
Voir dans la version récente de git (1.8.5 et au-dessus), vous pouvez bénéficier de% C (auto) dans la décoration placeholder% d
À partir d'ici, tout ce dont vous avez besoin est une bonne compréhension des gitrevisions pour filtrer tout ce dont vous avez besoin (quelque chose comme master..develop, où --simplify-merges pourrait aider avec les branches à long terme)
La puissance derrière la ligne de commande est la configuration rapide en fonction de vos besoins (comprendre qu'un dépôt n'est pas une configuration de journal de clé unique, donc l'ajout de --numstat, ou --raw, ou --name-status est parfois nécessaire. Ici git log et les alias sont rapides, puissants et (avec le temps) le plus joli graphique que vous pouvez obtenir. Encore plus, avec une sortie affichée par défaut via un pager (dites moins), vous pouvez toujours rechercher rapidement dans les résultats. Pas convaincu? Vous pouvez toujours analyser le résultat avec des projets comme gitgraph
la source
Très légèrement peaufiné la réponse impressionnante de Slipp , vous pouvez utiliser ses alias pour enregistrer une seule branche:
En laissant de côté,
--all
vous pouvez maintenantou même
la source
Je suggère
tig
https://github.com/jonas/tig , un bien meilleur outil de ligne de commande pour git.Vous pouvez utiliser homebrew pour installer tig sur macOS:
la source
J'ai cet
git log
alias~/.gitconfig
pour afficher l'historique du graphique:Avec cela en place,
git l
produira quelque chose comme:Dans Git 2.12 +, vous pouvez même personnaliser les couleurs de ligne du graphique en utilisant l'
log.graphColors
option de configuration.Quant au format des logs, il est similaire à
--oneline
, avec l'ajout du nom de l' auteur (respectant.mailmap
) et de la date relative de l'auteur . Notez que la%C(auto)
syntaxe, qui indique à Git d'utiliser les couleurs par défaut pour le hachage de validation, etc. est prise en charge dans Git> = 1.8.3 .la source
git log --graph --oneline
juste pour s'assurer que l'oneliner ne s'est pas perduAvez-vous essayé
gitk
ougitk --all
? Cependant, il n'a pas de fonction d'impression / sauvegarde img.la source
--all
Vous montre en particulier toutes les branches.GitGraph
Génère une représentation PNG ou SVG de l'historique des validations de votre référentiel Git.
https://code.google.com/p/gitgraph
la source
Ceci est ma variante terminale, similaire à de nombreuses réponses ici. J'aime ajuster les drapeaux passés
less
pour éviter le retour à la ligne.J'ai défini cela sur un alias pour un accès rapide car la commande est un peu lourde.
la source
Essayez ditaa . Il peut transformer n'importe quel diagramme ASCII en une image. Bien qu'il n'ait pas été conçu en pensant aux branches Git, j'ai été impressionné par les résultats.
Source (fichier txt):
Commander:
Résultat:
Il prend également en charge les couleurs d'arrière-plan, les lignes en pointillés, différentes formes et plus encore. Voir les exemples .
la source
Si votre référentiel se trouve sur Gitlab, vous pouvez utiliser sa représentation graphique telle qu'elle est rendue en SVG dans votre navigateur.
Accédez à la vue graphique de votre référentiel, par exemple https://gitlab.com/gitlab-org/gitter/webapp/network/develop
Faites défiler le graphique vers le bas (il charge paresseusement les commits!)
Utilisez l'inspecteur de votre navigateur pour copier l'élément SVG dans un nouveau fichier
Ouvrez-le dans un moteur de rendu de votre choix, par exemple Inkscape
la source
Je ne connais pas d'outil direct, mais vous pouvez peut-être pirater un script pour exporter les données au format dot et les rendre avec graphviz.
la source
io
commandes en simples commandes perl `git log [...]` a fonctionné pour moi.brew install perl dot
et ensuitecpan common::sense IO::all
obtenir les dépendances. Ensuite, dirigez simplement la sortie vers une commande appropriée, commegit-graphviz | dot -Tpng -o repo.png
. Cependant, la sortie n'est pas très différente de git-big-picture .Il y a un graphique de validation Git génial comme l'une des démos de la bibliothèque graphique Web Raphael .
La démo est statique, mais il devrait être assez facile de prendre le code et d'échanger leurs données statiques pour un ensemble de données en direct - je pense que ce sont juste des données de validation Git au format JSON.
La démo est ici: http://dmitrybaranovskiy.github.io/raphael/github/impact.html
la source
Une sortie de graphique git agréable et propre pour les coquilles
avec des hachages comme d'habitude à côté de l'arbre graphique
ou dans une colonne supplémentaire
Edit : Vous voulez commencer tout de suite sans lire les explications? Utilisez l'alias git, les extraits de code de script ou de fonction de la section EDIT 5 ci-dessous ou même la manière la plus confortable avec EDIT 6 .
Dans toutes les réponses à cette question, aucune n'a montré jusqu'à présent une sortie propre aux tableaux pour les coquilles. Le plus proche était cette réponse des évangiles d' où je suis parti.
Le point central de mon approche est de ne compter que les caractères d'arbre montrés à l'utilisateur. Remplissez-les ensuite à une longueur personnelle avec des espaces blancs.
Autre que git, vous avez besoin de ces outils
principalement à bord avec n'importe quelle distribution Linux.
L'extrait de code est
Pour calculer les espaces nécessaires que nous utilisons
pour obtenir tous les caractères (jusqu'à 1000 par ligne) que de sélectionner uniquement les caractères d'arbre: * | / \ _ et espaces avec
enfin, comptez-les et soustrayez le résultat de notre valeur de longueur choisie, qui est 9 dans l'exemple.
Pour produire la quantité calculée d'espaces blancs que nous utilisons
et tronquer les numéros de position avec
que de les ajouter à la fin de notre ligne de graphique. C'est ça!
Git a la bonne option pour formater la longueur des spécificateurs de sortie déjà avec la syntaxe
'%><(amount_of_characters,truncate_option)'
, qui ajoute des espaces blancs du côté gauche '>' ou droit '<' et peut tronquer les caractères du début 'ltrunc', du milieu 'mtrunc' ou de la fin «trunc».Il est important que les cmd printf ci-dessus utilisent les mêmes valeurs de longueur pour la colonne git correspondante.
Amusez-vous à créer votre propre sortie propre à la table selon vos besoins.
Supplémentaire:
Pour obtenir la bonne valeur de longueur, vous pouvez utiliser l'extrait de code suivant
et utilisez $ max_chars comme la bonne valeur de longueur ci-dessus.
EDIT 1 : Je viens de remarquer que le caractère de soulignement est également utilisé dans l'arbre git et modifiez les extraits de code ci-dessus en conséquence. S'il manque d'autres caractères, veuillez laisser un commentaire.
EDIT 2 : Si vous voulez vous débarrasser des crochets autour des entrées de branche et de balise, utilisez simplement "% D" au lieu de "% d" dans la commande git, comme dans EDIT 3.
EDIT 3 : Peut-être que l'option de couleur "auto" est celle que vous préférez le plus pour les entrées de branche et d'étiquette?
Modifiez cette partie de la commande git (couleur 214 )
à auto
EDIT 4 : Ou vous aimez votre propre mélange de couleurs pour cette partie, une sortie fantaisie avec une tête clignotante?
Pour pouvoir d'abord styliser les noms de tête, de branche et de balises, nous avons besoin de l'option de couleur "auto" dans notre commande git comme dans EDIT 3.
Ensuite, nous pouvons remplacer les valeurs de couleurs connues par les nôtres en ajoutant ces 3 lignes
juste avant la ligne
dans notre extrait de code. Les valeurs de remplacement produisent les couleurs ci-dessus.
Par exemple, la valeur de remplacement pour la tête est
où 3; signifie italique, 5; pour clignoter et 1; 38; 5; 196 pour la couleur. Pour plus d'informations, commencez ici. Remarque: ce comportement dépend de votre terminal préféré et peut donc ne pas être utilisable.
MAIS vous pouvez choisir n'importe quelle valeur de couleur que vous préférez.
VUE D'ENSEMBLE des valeurs de couleur git et équivalents ANSI
Vous trouverez ici une liste avec l' option git color / style .
Si vous avez besoin de la sortie sur votre console pour des couleurs précises (l'image ci-dessus est réduite par stackoverflow), vous pouvez produire la sortie avec
dans votre chemin de projet git qui utilise le premier commit de votre sortie de journal git.
EDIT 5 : Comme le membre "Andras Deak" l'a mentionné, il existe plusieurs façons d'utiliser ce code:
1) comme alias :
alias n'accepte pas les paramètres mais une fonction peut , donc juste définir dans votre .bashrc
et appelez la fonction git_tably (dérivée de tablelike) directement sous votre chemin de projet git ou d'où vous voulez avec votre chemin de projet git comme premier paramètre.
2) en tant que script shell :
Je l'utilise avec l'option pour lui passer un répertoire de projet git comme premier paramètre ou s'il est vide, prendre le répertoire de travail comme le comportement normal. Dans son intégralité, nous avons
3) comme alias git :
Le moyen le plus confortable est peut-être d'ajouter un alias git dans votre .gitconfig
Que simplement appeler
git tably
sous n'importe quel chemin de projet.Git est si puissant que vous pouvez changer la tête, les tags, ... directement comme indiqué ci-dessus et pris à partir d'ici .
Une autre option sophistiquée consiste à sélectionner les couleurs d'arbre que vous préférez le plus avec
qui vous donne un aspect fou mais toujours des sorties de journaux git
Trop de clignotements! Juste pour montrer ce qui est possible. Trop peu de couleurs spécifiées entraînent des répétitions de couleurs.
Une référence .gitconfig complète est à portée de clic.
EDIT 6 : En raison de vos votes positifs, j'ai amélioré l'extrait de code. Maintenant, vous pouvez le nourrir avec presque n'importe quelle commande git log et vous n'avez plus besoin d'adapter le code. Essayez!
Comment ça fonctionne?
Alors appelez
git tably YourLogAlias
ou
git tably YourLogAlias TreeColNumber
où TreeColNumber écrase une valeur toujours définie d'en haut.
Limitation:
pour chaque spécificateur de votre commande log, vous devez utiliser cette syntaxe
%><(<N>[,ltrunc|mtrunc|trunc])
en plus du dernier et seulement si votre colonne d'arbre choisie ne doit pas être la dernière
(pour des explications, voir https://git-scm.com/docs/pretty-formats )
YourLogAlias-col
Maintenant l'extrait amélioré pour votre .gitconfig
Résultats:
ou avec le nouveau TreeColNumber à la volée
ENCORE: Amusez-vous à créer votre propre sortie propre à la table selon vos besoins.
la source
certains alias dans ~ / .oh-my-zsh / plugins / git / git.plugin.zsh
la source
Pour les utilisateurs OSX, j'ai pris l'exemple @gospes et l'ai légèrement modifié pour gsed (
gnu-sed
installé via homebrew) et ajusté les couleurs (pour travailler avec un fond noir , je ne sais pas comment l'exemple original pourrait éventuellement rendre la façon dont il le fait dans le exemple car il spécifie du texte noir sur un terminal avec un fond noir).La clé pour OSX est d'installer d'abord gnu sed (qui a l'option -r). Le plus facilement fait avec homebrew, qui n'écrasera pas le sed installé par le système, mais installera plutôt gnu sed en tant que "gsed". J'espère que cela aide @ SlippD.Thompson qui a commenté ci-dessus que OSX ne fonctionne pas.
la source