• 6 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 10/25/24

Corrigez un commit raté

Voilà des semaines que vous développez vos projets et tout se déroule comme sur des roulettes. Sauf qu’un beau matin, votre chef de projet vous demande de revenir à une version précédente du projet. Il a aussi besoin de savoir qui a fait quel commit ! !

Heureusement, les techniques de journalisation de Git ont été prévues pour répondre à ce genre de situation. 

Journal ou
Journal ou "log", en anglais

Un trou de mémoire ? git reflog !

L'objectif d'un gestionnaire de versions est d'enregistrer les changements apportés à votre code. Il vous permet de consulter l'historique de votre projet pour :

  • savoir qui a contribué à quoi ;

  • déterminer où des bugs ont été introduits ;

  • annuler les changements problématiques.

Peut-être, mais disposer de cet historique est inutile si vous ne savez pas comment l'utiliser !  C'est là que la commande   git log  entre en scène !

git log

Par défaut,    git log    énumère en ordre chronologique inversé les commits réalisés. Cela signifie que les commits les plus récents apparaissent en premier. Cette commande affiche chaque commit avec son identifiant SHA, l'auteur du commit, la date et le message du commit. 

Git dispose d'un outil encore plus puissant, poussant le journal de logs à l’extrême.

git reflog

git reflog  va loguer les commits ainsi que toutes les autres actions que vous avez pu faire en local : vos modifications de messages, vos merges, vos resets, enfin tout, quoi  . Comme    git log   ,   git reflog  affiche un identifiant SHA-1 pour chaque action. Il est donc très facile de revenir à une action donnée grâce au SHA. Cette commande, c'est votre joker, elle assure votre survie en cas d'erreur. Pour revenir à une action donnée, on prend les 8 premiers caractères de son SHA et on fait :

git checkout e789e7c

TADAMMMMMMM ! Vous avez été propulsé dans le temps  .

Qui s’est amusé dans mon dépôt ? git blame

Si vous découvrez un bug dans votre projet, vous allez avoir besoin d'identifier son origine et de savoir qui a modifié chaque ligne du code. C'est à ce moment que  git blame  entre en scène.

La commande    git blame   permet d’examiner le contenu d’un fichier ligne par ligne et de déterminer la date à laquelle chaque ligne a été modifiée, et le nom de l’auteur des modifications  .

git blame monFichier.php

git blame  va afficher pour chaque ligne modifiée :

  • son ID ;

  • l'auteur ;

  • l'horodatage ;

  • le numéro de la ligne ;

  • le contenu de la ligne.

Avec   git blame  , vous devenez un super espion de votre projet !

Il me faut ce commit ! Vite git cherry-pick

Lorsque vous travaillez avec une équipe de développeurs sur un projet de moyenne à grande taille, la gestion des modifications entre plusieurs branches de Git peut devenir une tâche complexe. Parfois, vous ne voulez pas fusionner une branche entière dans une autre et vous n'avez besoin que de choisir un ou deux commits spécifiques. Ce processus s'appelle cherry-pick

Admettons que vous travailliez sur une branche "Mes évolutions", et que vous ayez déjà réalisé plusieurs commits. Votre collègue a besoin de l'une de ces évolutions pour la livrer au client, mais pas des autres. C'est dans ce cas bien précis que nous allons faire appel à    git cherry-pick  ! Cette commande va permettre de sélectionner un ou plusieurs commits grâce à leur SHA (décidément ils sont partout) et de les migrer sur la branche principale, sans pour autant fusionner toute la branche "Mes évolutions".

git cherry-pick d356940 de966d4

Ici, nous prenons les deux commits ayant pour SHA d356940 et de966d4, et nous les ajoutons à la branche principale sans pour autant les enlever de votre branche actuelle. Nous les dupliquons !

En résumé

  • git log affiche l'historique des commits réalisés sur la branche courante.

  • git reflog est identique à git log. Cette commande affiche également toutes les actions réalisées en local.

  • git checkout un_identifiant_SHA-1 permet de revenir à une action donnée.

  • git blame permet de savoir qui a réalisé telle modification dans un fichier, à quelle date, ligne par ligne.

  • git cherry-pick un_identifiant_SHA-1 un_autre_identifiant_SHA-1 permet de sélectionner un commit et de l'appliquer sur la branche actuelle. 

Vous avez désormais toutes les clés en mains pour corriger vos erreurs sur Git ! Rendez-vous au dernier chapitre de ce cours pour récapituler ce que vous avez appris et accéder à des ressources supplémentaires !

Example of certificate of achievement
Example of certificate of achievement