Comment puis-je afficher une sortie de journal git avec (au moins) cette information:
* author
* commit date
* change
Je veux le compresser à une ligne par entrée de journal. Quel est le format le plus court possible pour cela?
(essayé --format=oneline
mais cela ne montre pas la date)
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
a fait le travail. Cela génère:
fbc3503 mads Thu Dec 4 07:43:27 2008 +0000 show mobile if phone is null...
ec36490 jesper Wed Nov 26 05:41:37 2008 +0000 Cleanup after [942]: Using timezon
ae62afd tobias Tue Nov 25 21:42:55 2008 +0000 Fixed #67 by adding time zone supp
164be7e mads Tue Nov 25 19:56:43 2008 +0000 fixed tests, and a 'unending appoi
93f1526 jesper Tue Nov 25 09:45:56 2008 +0000 adding time.ZONE.now as time zone
2f0f8c1 tobias Tue Nov 25 03:07:02 2008 +0000 Timezone configured in environment
a33c1dc jesper Tue Nov 25 01:26:18 2008 +0000 updated to most recent will_pagina
Inspiré par question de stackoverflow: "la sortie du journal git comme svn ls -v" , j'ai découvert que je pouvais ajouter les paramètres exacts dont j'avais besoin.
Pour raccourcir la date (ne pas afficher l'heure), utilisez --date=short
Au cas où vous seriez curieux de savoir quelles étaient les différentes options:%h
= hachage de validation abrégé%x09
= tabulation (caractère pour le code 9)%an
= nom de l'auteur%ad
= date de l'auteur (le format respecte --date = option)%s
= sujet
De kernel.org/pub/software/scm/git/docs/git-log.html (section PRETTY FORMATS) par le commentaire de Vivek.
git log --pretty=format:"%H %an %ad"
utilisez --date=
pour définir un format de date
git log --pretty=format:"%H %an %ad" --date=short
tig est une alternative possible à l’utilisation de la commande git log , disponible sur les principales distributions open source * nix.
Sur debian ou ubuntu , essayez d’installer et d’exécuter comme suit:
$ Sudo apt-get install tig
(tig est installé)
$ tig
(le journal est affiché dans le pager comme suit, avec le hachage de validation actuel affiché en bas)
2010-03-17 01:07 ndesigner changes to sponsors list
2010-03-17 00:19 rcoder Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)
Comme Markdown ne supporte pas la coloration du texte, imaginez: column 1: blue; colonne 2: verte; colonne 3: couleur du texte par défaut. Dernière ligne, mise en évidence. Appuyez sur Q ou q pour quitter.
tig
justifie les colonnes sans bords irréguliers , ce qu'un onglet ascii (% x09) ne garantit pas.
Pour un format de date court , tapez majuscule D (remarque: minuscule d ouvre une vue diff.) Configurez-la de façon permanente en ajoutant show-date = short
à ~/.tigrc; ou dans une section [tig]
dans .git/configure ou ~/.gitconfig.
Pour voir un changement complet :
Puisque tig est distinct de git et apparemment * nix spécifique, il faut probablement installer cygwin sur Windows. Mais pour Fedora Je crois que les commandes d’installation sont $ su
, (enter root password)
, # yum install tig
. Pour freebsd essayez % su
, (enter root password)
, # pkg_add -r tig
.
À propos, tig est bien plus qu'une simple vue rapide du journal: Captures d'écran & Manuel
git log --pretty=format:'%h %ad %s (%an)' --date=short
ou
git log --pretty=format:'%h %ad %s | %an' --date=short
... reprenant la réponse de cdunn2001 ci-dessus: je perdrais l'adresse e-mail de l'auteur et n'inclurais que le nom de l'auteur, conformément à Jesper et knittl, tout en restant fidèle à l'idée de cdunn2001 de conserver les résultats dans des colonnes de largeur constante pour faciliter la lecture ( bonne idée!). Cependant, au lieu d'une colonne séparée pour le nom de l'auteur, motivée à gauche, j'emballe l'indicateur à la fin de la commande avec des parenthèses ou le décale avec un tuyau. (Peut-être que tout caractère servirait d’aide visuelle à la lecture du résultat ... il serait peut-être logique d’éviter les barres obliques inverses ou inverses afin de ne pas confondre le résultat avec un répertoire ou quelque chose de ce genre.)
Exemple de sortie:
6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
Utilisez un alias prédéfini, c'est-à-dire:
$ git work
Créé une fois par commande:
$ git config --global alias.work 'log --pretty=format:"%h%x09%an%x09%ad%x09%s"'
https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases
Ou plus coloré avec graphique:
$ git config --global alias.work 'log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all'
git log --pretty=format:'%h %ad %s%x09%ae' --date=short
Résultat:
e17bae5 2011-09-30 Integrate from development -> main [email protected]
eaead2c 2011-09-30 More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22 Merge branch 'freebase' into development [email protected]
Les trucs à largeur constante sont les premiers. La partie la moins importante - le domaine de messagerie - est la dernière et facile à filtrer.
Pour montrer les commits que j'ai mis en scène qui sont prêts à pousser, je le fais
git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F'\t' '{gsub(/[, ]/,"",$2);gsub(/HEAD/, "\033[1;36mH\033[00m",$2);gsub(/master/, "\033[1;32mm\033[00m",$2);gsub(/trunk/, "\033[1;31mt\033[00m",$2);print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}' | less -eiFRXS
La sortie ressemble à quelque chose comme:
ef87da7 2013-01-17 haslers (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers Refactor Frobble
815813b 2013-01-17 haslers (t)Add Wibble to Frobble
3616373 2013-01-17 haslers Add Foo to Frobble
3b5ccf0 2013-01-17 haslers Add Bar to Frobble
a1db9ef 2013-01-17 haslers Add Frobble Widget
Où la première colonne apparaît en jaune, et les 'H' 'm' et 't' dans la parentesis indiquent la TÊTE, le maître et le tronc et apparaissent dans leurs couleurs habituelles "--décorées"
La voici avec des sauts de ligne pour que vous puissiez voir ce qu’elle fait:
git log remotes/trunk~4..HEAD --date=short
--pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
| awk -F'\t' '{
gsub(/[, ]/,"",$2);
gsub(/HEAD/, "\033[1;36mH\033[00m",$2);
gsub(/master/, "\033[1;32mm\033[00m",$2);
gsub(/trunk/, "\033[1;31mt\033[00m",$2);
print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}'
Je me suis associé à "mis en scène" avec:
git config alias.staged '!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"\t" "{gsub(/[, ]/,\"\",\$2);gsub(/HEAD/, \"\033[1;36mH\033[00m\",\$2);gsub(/master/, \"\033[1;32mm\033[00m\",\$2);gsub(/trunk/, \"\033[1;31mt\033[00m\",\$2);print \$1 \"\t\" gensub(/([\(\)])/, \"\033[0;33m\\\\\1\033[00m\",\"g\",\$2) \$3}"'
(Y a-t-il un moyen plus simple d’échapper à cela? C’était un peu difficile de déterminer ce qui devait s’échapper)
Toutes les suggestions susmentionnées utilisent %s
espace réservé pour le sujet. Je recommanderai d'utiliser %B
parce que %s
le formatage conserve les nouvelles lignes et que le message de validation de plusieurs lignes apparaît écrasé.
git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
Exécutez ceci dans le dossier du projet:
$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all
Et si vous le souhaitez, ajoutez cette ligne à votre ~/.gitconfig:
[alias]
...
list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all