Inspecter un dépôt

Inspecter un dépôt grâce à git status

git status

La commande git status affiche l'état du répertoire de travail et de la zone de staging. Elle vous permet de voir les changements qui ont été stagés, ceux qui ne l'ont pas été, ainsi que les fichiers qui sont suivis par Git. La sortie de l'état n'affichera pas les informations sur l'historique du projet commité. Pour cela, vous devez utiliser git log.

Commandes Git connexes

  • git tag  
    • Les tags sont des réfs qui pointent vers des emplacements spécifiques de l'historique Git. git tag est généralement utilisée pour capturer un point de l'historique associé à une version marquée (c.-à-d., v1.0.1). 
  • git blame
    • git blame a pour fonction générale d'afficher les métadonnées d'auteur associées à des lignes de commit spécifiques dans un fichier. Cela permet d'examiner des points spécifiques de l'historique d'un fichier et de répondre aux questions « quel code a été ajouté à un dépôt », « comment » et « pourquoi ».
  • git log  
    • La commande git log affiche des instantanés commités. Elle vous permet de lister l'historique du projet, de le filtrer et de rechercher des changements spécifiques. 

Utilisation

git status

Répertorie les fichiers stagés, non stagés et non suivis.

Discussion

La commande git status est relativement simple. Elle vous montre simplement ce qui se passe avec git add et git commit. Les messages d'état comprennent également des instructions pertinentes pour effectuer ou annuler un stage de fichiers. Vous trouverez ci-dessous un exemple de sortie affichant les trois catégories principales d'un appel git status :

# Sur la branche principale
# Changements à commiter :
# (Utiliser "git reset HEAD <file>..." pour annuler le staging)
#
#Modifié : hello.py
#
# Changements non stagés à commiter :
# (Utiliser "git add <file>..." pour mettre à jour ce qui sera commité)
# (Utiliser "git checkout -- <file>..." pour annuler les changements dans le répertoire de travail)
#
#Modifié : main.py
#
# Fichiers non suivis :
# (Utiliser "git add <file>..."pour inclure ce qui sera commité)
#
#hello.pyc

Ignorer des fichiers

Les fichiers non suivis sont généralement répartis en deux catégories. Il peut s'agir de fichiers qui ont simplement été ajoutés au projet et qui n'ont pas encore été commités, ou de fichiers binaires compilés comme .pyc, .obj, .exe, etc. Bien qu'il soit sans aucun doute avantageux d'inclure le premier type de fichiers dans la sortie git status, le second peut créer des difficultés pour voir ce qui se passe réellement dans votre dépôt.

C'est la raison pour laquelle Git vous permet d'ignorer totalement les fichiers en plaçant les chemins dans un fichier spécial nommé .gitignore. Tous les fichiers que vous souhaitez ignorer doivent figurer sur une ligne distincte, et le symbole * peut être utilisé comme un caractère générique. Par exemple, le fait d'ajouter ce qui suit dans un fichier .gitignore à la racine de votre projet empêchera les modules Python compilés d'apparaître dans git status :

*.pyc

Exemple

Il est recommandé de vérifier l'état de votre dépôt avant de commiter les changements pour que vous ne commitiez pas accidentellement quelque chose sans le vouloir. Cet exemple indique l'état du dépôt avant et après le stage et le commit d'un instantané :

# Modifiez hello.py
git status
# hello.py est répertorié sous "Changes not staged for commit"
git add hello.py
git status
# hello.py est répertorié sous "Changes to be committed"
git commit
git status
# Rien à commiter (répertoire de travail propre)

La première sortie d'état affiche le fichier comme étant non stagé. L'action git add est reflétée dans le second git status, et la sortie d'état finale vous indique qu'il n'y a rien à commiter (le répertoire de travail correspond au commit le plus récent). Certaines commandes Git (p. ex., git merge) nécessitent que le répertoire de travail soit propre pour éviter que vous n'écrasiez accidentellement des changements.

Git log

La commande git log affiche des instantanés commités. Elle vous permet de lister l'historique du projet, de le filtrer et de rechercher des changements spécifiques. Alors que git status vous permet d'inspecter le répertoire de travail et la zone de staging, git log fonctionne uniquement sur l'historique commité.

Tutoriel Git : git status et git log

Vous pouvez personnaliser la sortie du journal de différentes manières, par exemple en filtrant simplement les commits ou en les affichant dans un format entièrement définissable par l'utilisateur. Certaines des configurations les plus courantes de git log sont présentées ci-dessous.

Utilisation

git log

Affiche l'historique complet des commits en utilisant le formatage par défaut. Si la sortie nécessite plusieurs écrans, vous pouvez utiliser la touche Espace pour faire défiler et la touche q pour quitter.

git log -n <limit>

Limite le nombre de commits à <limit>. Par exemple, git log -n 3 affichera seulement trois commits.

git log --oneline

Rassemble tous les commits sur une seule ligne. Cette commande est utile pour obtenir un aperçu général de l'historique du projet.

git log --stat

En plus des informations git log ordinaires, incluez les fichiers qui ont été modifiés, et le nombre relatif de lignes qui ont été ajoutées ou supprimées de chacun d'entre eux.

git log -p

Affiche le patch représentant chaque commit. Cette commande affiche une comparaison complète de tous les commits, c'est la vue la plus détaillée que vous pouvez avoir de votre historique de projet.

git log --author="<pattern>"

Recherche les commits d'un auteur en particulier. L'argument <pattern> peut être une chaîne brute ou une expression régulière.

git log --grep="<pattern>"

Recherche les commits avec un message de commit qui correspond à <pattern> (chaîne brute ou expression régulière).

git log <since>..<until>

Affiche uniquement les commits qui surviennent entre <since> et <until>. Les deux arguments peuvent être un ID de commit, un nom de branche, un HEAD ou tout autre type de référence de version.

git log <file>

Affiche uniquement les commits qui comprennent le fichier spécifié. C'est un moyen facile de voir l'historique d'un fichier spécifique.

git log --graph --decorate --oneline

Quelques options utiles à prendre en compte. L'option --graph dessine un graphique basé sur le texte des commits à gauche des messages de commit. L'option --decorate ajoute les noms des branches ou des options des commits affichés. L'option --oneline indique les informations de commit sur une ligne unique, ce qui offre un aperçu rapide des commits.

Discussion

La commande git log est l'outil de base de Git pour explorer l'historique d'un dépôt. Vous l'utiliserez lorsque vous rechercherez une version spécifique d'un projet ou lorsque vous voudrez savoir quels changements seront introduits en faisant un merge dans une branche de fonctionnalité.

commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
Author: Jean Dupond

Elle est relativement simple, mais la première ligne mérite quelques explications. La chaîne de 40 caractères après commit est une somme de contrôle SHA-1 du contenu du commit. Elle a deux fonctions. Tout d'abord, elle assure l'intégrité du commit. S'il est corrompu, le commit génère une somme de contrôle différente. Elle sert également d'ID unique pour le commit.

Cet ID peut être utilisé dans des commandes comme git log <since>..<until> pour référencer certains commits. Par exemple, git log 3157e..5ab91 affiche tous les éléments entre les commits portant les ID 3157e et 5ab91. En dehors des sommes de contrôle, les noms de branche (examinés dans le module Branches) et le mot-clé HEAD sont d'autres méthodes courantes pour référencer des commits individuels. HEAD renvoie toujours au commit actuel, qu'il s'agisse d'une branche ou d'un commit spécifique.

Le caractère ~ permet de créer des références relatives au parent d'un commit. Par exemple, 3157e~1 renvoie au commit avant 3157e, et HEAD~3 est l'arrière grand-parent du commit actuel.

Toutes ces méthodes d'identification ont un objectif commun : vous permettre d'effectuer des actions en fonction de certains commits. La commande git log est généralement le point de départ de ces interactions. Elle vous permet en effet de trouver les commits avec lesquels vous voulez travailler.

Exemple

La section Utilisation contient de nombreux exemples de git log, mais gardez à l'esprit qu'il est possible de combiner plusieurs options dans une commande :

git log --author="Jean Dupond" -p hello.py

Cette commande affichera un diff complet de tous les changements apportés par Jean Dupond dans le fichier hello.py.

La syntaxe .. est un outil très utile pour comparer des branches. L'exemple suivant affiche un bref aperçu de tous les commits situés dans some-feature et en dehors de master.

git log --oneline master..some-feature

Prêt à découvrir git status ?

Essayez ce tutoriel interactif.

Démarrez maintenant