Inspecter un dépôt
git status
La commande git status affiche l’état du répertoire de travail et de la zone de staging. Il vous permet de voir quels changements ont été indexés ou non, et quels fichiers ne sont pas suivis par Git. La sortie de l’état n’affiche aucune information concernant l’historique du projet commité. Pour cela, vous devez utiliser git log.
Commandes Git connexes
Les tags sont des réfs qui pointent vers des points spécifiques de l'historique Git.
git tagest généralement utilisé pour capturer un point dans l'historique utilisé pour une livraison de version marquée (p. ex., v1.0.1).
git blamea pour fonction générale d'afficher les métadonnées d'auteur associées à des lignes de commit spécifiques dans un fichier. Cette approche est utilisée pour explorer l'historique d'un code spécifique et répondre aux questions « quel code a été ajouté à un dépôt », « comment » et « pourquoi ».
La commande
git logaffiche les instantanés commités. Elle vous permet de répertorier l'historique du projet, de le filtrer et de rechercher des changements spécifiques.
Utilisation
git statusRé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 d'état 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 main
# 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.pycIgnorer 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 complètement des fichiers en plaçant les chemins dans un fichier spécial appelé .gitignore. Tous les fichiers que vous souhaitez ignorer doivent être inclus sur une ligne distincte, et le symbole * peut être utilisé comme caractère générique. Par exemple, ajouter ce qui suit à un fichier .gitignore dans la racine de votre projet empêchera l’affichage des modules Python compilés dans git status :
*.pycExemple
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 staging et le commit d'un bout de code :
# Edit hello.py
git status
# hello.py is listed under "Changes not staged for commit"
git add hello.py
git status
# hello.py is listed under "Changes to be committed"
git commit
git status
# nothing to commit (working directory clean)La première sortie de l'état affichera le fichier comme étant non stagé. L'action git add sera reflétée dans le second git status, et la sortie de l'état 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é.
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 logAfficher 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 <limit>Limiter le nombre de commits par <limite>. Par exemple, git log -n 3 affichera seulement trois commits.
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 --onelinegit log --statEn 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 -pAffiche 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>"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="<pattern>"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 <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 --onelineQuelques 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
5. Vérifiez l'état du fichier.
commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
Author: John SmithElle 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.
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.pyCette 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 main.
git log --oneline main..some-feature