Inspecter un dépôt

Git Status: Inspecting a repository

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 trackés par Git. La sortie du statut n'affichera pas les informations sur l'historique du projet commité. Pour cela, vous devez utiliser git log.

Related git commands

  • git tag  
    • Tags are ref's that point to specific points in Git history. git tag is generally used to capture a point in history that is used for a marked version release (i.e. v1.0.1). 
  • git blame
    • The high-level function of git blame is the display of author metadata attached to specific committed lines in a file. This is used to explore the history of specific code and answer questions about what, how, and why the code was added to a repository.
  • git log  
    • The git log command displays committed snapshots. It lets you list the project history, filter it, and search for specific changes. 

Utilisation

git status

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

Discussion

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

# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#modified: main.py
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#hello.pyc

Ignorer des fichiers

Les fichiers non trackés 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 le statut du dépôt avant et après le staging et le commit d'un bout de code :

# 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 de statut affichera le fichier comme étant non stagé. L'action git add sera reflétée dans le second git status, et la sortie de statut finale vous indiquera 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 les 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

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

git log -n <limite>

Limiter le nombre de commits par <limite>. 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="<modèle>"

Rechercher 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="<modèle>"

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

git log <since>..<until>

Affichez 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 révision.

git log <fichier>

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: John Smith

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 dont les ID sont 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="John Smith" -p hello.py

Cette commande affichera une comparaison complète de tous les changements apportés par Jean 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

Ready to learn git status?

Essayez ce tutoriel interactif.

Démarrez maintenant