web-dev-qa-db-fra.com

La sortie la plus courte possible du journal git contenant l'auteur et la date

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)

393
Jesper Rønn-Jensen

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.

597
Jesper Rønn-Jensen
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
91
knittl

N'hésitez pas à utiliser celui-ci:

git log --pretty="%C(Yellow)%h  %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"

Regardez:

pretty git log example

47

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 :

  • hit Entrez . Un sous-volet s'ouvrira dans la moitié inférieure de la fenêtre.
  • utilisez les touches k , j pour faire défiler les modifications dans le sous-volet.
  • en même temps, utilisez les touches haut , bas pour passer de s'engager à s'engager.

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

46
Joe Generic
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
33
Sean

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'

enter image description here

27
Míra
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.

8
cdunn2001

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)

4
Sam Hasler

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"
1
palik

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
0
MUH Mobile Inc.