Comment inspecter l'historique d'un projet avec Git Log

Comment inspecter l'historique d'un projet avec Git Log

L'un des services les plus fondamentaux fournis par Git est l'historique du projet. Étant donné que Git garde une trace de toutes les modifications apportées aux fichiers dans un référentiel, il peut offrir des fonctionnalités de journalisation très puissantes. Vous pouvez interroger l'historique d'un projet de différentes manières et vous pouvez extraire et afficher diverses données à l'aide d'une seule commande flexible.





Les git log est énorme, la plus grande de toutes les commandes Git classiques. Son manuel compte plus de 2 500 lignes. Heureusement, git log fournit une grande partie de son comportement le plus utile à partir de quelques options clés.





Journalisation de base avec le comportement par défaut

Par défaut, git log affiche une liste chronologique inversée des commits. Chaque commit comprend son hachage, son auteur, sa date et son message de commit :





La commande utilise un pager (par exemple, moins, plus) pour afficher la sortie complète afin que vous puissiez facilement naviguer dans les résultats. Vous pouvez configurer Git pour utiliser un programme de votre choix, tel que most pager .

Voici une sortie de journal git de le dépôt du code source git lui-même :



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: Junio C Hamano

Le résultat commence par le hachage de validation ( 670 ...) suivi d'une liste de branches qui pointent actuellement vers ce commit ( TÊTE -> maître , etc.)

app zone ar qu'est-ce que c'est

La ligne suivante décrit l'auteur de ce commit, en donnant son nom et son adresse e-mail.





La date et l'heure complètes du commit suivent sur la ligne suivante.

Enfin, le contenu complet du message de validation apparaît. Vous pouvez contrôler la plupart de tout ce que git log propose avec des options de ligne de commande. Il existe deux principaux types d'options :





  • Le formatage, qui définit comment Git affiche chaque commit.
  • Filtrage, qui définit quels commits git log comprend.

En plus des options de ligne de commande, git log accepte des arguments qui spécifient des fichiers, des commits, des branches ou d'autres types de référence. Ceux-ci appliquent un filtrage supplémentaire.

Formatage de la sortie du journal Git

L'un des ajustements les plus simples est le --une ligne option qui produit une sortie très brève :

git log --oneline

Chaque ligne du journal ne contient désormais qu'un hachage de validation abrégé et le sujet du message de validation. C'est un excellent moyen d'avoir une vue d'ensemble des commits récents du projet :

Malheureusement, sans autre contexte, ces informations ne sont pas toujours très utiles. Cela peut vous donner une vague idée du projet, mais il manque des dates et d'autres informations utiles sur les auteurs et les fichiers.

Affichage d'un graphique de branche

Les --graphique L'option vous permet de visualiser les relations entre les branches. C'est très basique mais peut aider à démêler une histoire compliquée.

git log --oneline --graph

En rapport: Comment créer une nouvelle branche dans Git

Jolie sortie personnalisée

Vous pouvez obtenir un formatage plus compliqué en le spécifiant en détail à l'aide de la --joli option. La syntaxe va de très simple à beaucoup plus complexe, donc consulter un manuel pour tous les détails .

framboise pi 3 modèle b vs b+
git log --pretty=short

est essentiellement le même que git log sans la date ni le message complet :

git log --pretty=oneline

Est équivalent à git log --oneline .

git log --pretty=fuller

Comprend beaucoup de détails. Il sépare même auteur et committer qui peuvent, en théorie, être des personnes différentes :

Avec le format: variante, vous pouvez fournir une chaîne contenant le contenu de votre choix, y compris des espaces réservés qui sont remplacés par diverses données. Voici quelques exemples d'espaces réservés :

  • %H commit hachage
  • %h hachage de validation abrégé
  • date de l'auteur
  • %Avec auteur date, parent
  • %s commit sujet du message
  • %b corps du message de validation
  • %p hachages parent abrégés

Vous pouvez ajouter des caractères fixes à la sortie et la coloriser. Cet exemple montre également une variante du format de date :

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short

Notez que les parenthèses entourent la date. Quel que soit le formatage que vous choisissez, si vous souhaitez que la sortie soit utile dans un pipeline ou pour d'autres formes de traitement de texte, vous devez réfléchir à la manière de délimiter chaque partie de la sortie.

Affichage des différences dans le journal

Un détail important lors de l'examen de l'historique d'un référentiel est les différences elles-mêmes. Ils représentent ce qui a réellement changé dans le code, après tout ! Pour commencer, vous pouvez obtenir un résumé des modifications à côté de chaque validation en utilisant --shortstat :

git log --shortstat

Cela ajoute une ligne comme :

1 file changed, 48 insertions(+), 2 deletions(-)

Au bas de chaque commit. Vous verrez souvent ce genre de résumé - tout au long des pages sur GitHub, par exemple - et c'est un moyen utile d'évaluer rapidement la portée d'un commit spécifique. Pour des informations plus détaillées, vous pouvez inclure une sortie de patch complète (diffs) en utilisant le -p drapeau:

git log -p

Filtrage de la sortie du journal Git

Quel que soit le formatage que vous appliquez, vous verrez toujours le journal complet de tous les commits dans la branche actuelle. Même si Git les divise en pages, cela peut quand même être beaucoup de sortie. Les options suivantes vous permettent de personnaliser les commits inclus dans le journal.

Restriction par montant

Si vous voulez juste rogner les résultats pour afficher les quelques commits les plus récents, utilisez le -[numéro] syntaxe:

git log -2

Restriction par date

Pour restreindre l'ensemble des commits à une plage de dates donnée, utilisez le --puisque ( --après ) et --jusqu'à ( --avant ) options. Celles-ci prennent chacune une date au format ISO 8601. Vous pouvez utiliser soit --puisque ou --jusqu'à seuls, ou les deux ensemble pour spécifier une plage. Les options --après et --avant sont des synonymes.

git log --since='2021-01-01' --until='2021-05-01'

Restriction par fichier

Git log peut se concentrer sur un fichier spécifique plutôt que sur chaque fichier de votre référentiel. C'est très bien pour vous aider à découvrir comment un fichier particulier a changé au fil du temps. Ajoutez simplement le nom du fichier à la fin de votre commande git :

git log filename

Vous ne verrez que les commits qui ont affecté nom de fichier .

Différences entre les succursales

Vous pouvez avoir des exigences uniques lors de l'affichage du journal d'une branche. Par exemple, plutôt que de voir l'historique complet, vous voudrez peut-être simplement voir ce qui a changé dans cette branche spécifique. Git log peut vous aider via le ref1..ref2 syntaxe. Vous pouvez utiliser trois approches légèrement différentes :

  1. Afficher les commits qui sont dans le main, mais pas dans la branche : |_+_|
  2. Afficher les commits qui sont dans la branche, mais pas dans le main : |_+_|
  3. Afficher les commits qui n'existent que dans la branche ou le principal : |_+_|

Différences entre deux balises

Tout comme vous pouvez afficher l'historique entre les branches en utilisant le ref1..ref2 syntaxe, vous pouvez également afficher l'historique entre les balises de la même manière. Après tout, les balises et les branches sont des types de référence.

git log --oneline origin/branch..origin/main

Si vous préparez des notes de version pour un projet plus important, git shortlog devrait être votre premier port d'escale. Il produit une liste d'auteurs avec des sujets de commit à leurs côtés. Vous pouvez lui transmettre une plage de référence pour limiter l'historique de la même manière que git log :

git log --oneline origin/ main ..origin/ branch

Les commande git show est encore plus polyvalent que git log . Il peut fonctionner avec des balises et d'autres types d'objets git au-delà de l'historique des commits. Il partage de nombreuses options avec git log , mais vous n'en aurez vraiment besoin que si vous avez besoin d'approfondir les détails de niveau inférieur.

Revoir le passé avec Git Log

Git log est une commande compliquée, mais vous pouvez obtenir beaucoup d'utilisation de ses options les plus basiques. Parcourir l'historique d'un référentiel est un excellent moyen de comprendre à quelle fréquence les changements se produisent et combien de personnes les font. Une fois que vous aurez une bonne compréhension de l'histoire d'un projet, vous serez dans une excellente position pour y contribuer vous-même.

comment transférer des fichiers d'un ordinateur vers un téléphone
Partager Partager Tweeter E-mail Rejoignez la tendance du codage social et contribuez aux référentiels GitHub

Vous voulez exercer vos muscles de codage et aider des projets open source ? Voici comment contribuer à GitHub.

Lire la suite
Rubriques connexes
  • La programmation
  • GitHub
  • Conseils de codage
A propos de l'auteur Bobby Jack(58 articles publiés)

Bobby est un passionné de technologie qui a travaillé comme développeur de logiciels pendant près de deux décennies. Il est passionné par les jeux, travaillant comme rédacteur de critiques au Switch Player Magazine, et est immergé dans tous les aspects de la publication en ligne et du développement Web.

Plus de Bobby Jack

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner