• 12 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 26/08/2019

Corrigez un commit raté

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Cela faisait plusieurs semaines que tout allait bien dans le plus beau des mondes  et que vous n'aviez pas eu de problèmes au cours de vos développements. Sauf que la vie de développeur n'est jamais Bisounours et votre chef de projet vous dit que l'on va avoir besoin de revenir à une version précédente, et qu'il a besoin de savoir qui a fait quel commit ! :waw:  Heureusement, les techniques de journalisation de Git ont exactement été prévues pour répondre à ce genre de situation. 

Log
Log

Un trou de mémoire ? Git reflog !

L'objectif d'un système de contrôle de versions est d'enregistrer les changements apportés à votre code. Il vous permet de consulter l'historique de votre projet pour voir qui a contribué à quoi, de déterminer où des bugs ont été introduits et d'annuler les changements problématiques. Oui, 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, mais aussi toutes les autres actions que vous avez pu faire en local. Git reflog va enregistrer vos commits, vos modifications de messages, vos merges, vos resets, enfin tout, quoi. :-°  Ce qui est très pratique, c'est que comme Git log, Git reflog va afficher 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. :magicien:

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

Maintenant que vous êtes un pro des logs, que vous savez trouver l'auteur des derniers commits, il est parfois utile de connaître à l'intérieur d'un fichier qui a modifié chaque ligne. Cela peut permettre de trouver l'auteur d'un bug. :pirate:

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.:lol:

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 et 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 ! Attention, Git cherry-pick n'est pas très apprécié dans la communauté des développeurs ! En effet, cette commande va dupliquer des commits existants. Il sera préférable, si possible, de réaliser un merge.

Admettons que vous travailliez sur votre 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 à leurs SHA (décidément ils sont partout) et de les migrer sur la branche master, 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 master sans pour autant les enlever de votre branche actuelle. Nous les dupliquons !

Vous êtes arrivé à la fin de cette partie et vous savez maintenant corriger toutes vos erreurs sur Git et GitHub ! Pour le vérifier, je vous invite à réaliser le quiz de cette partie, puis on se retrouve dans la partie suivante. À tout de suite !

Exemple de certificat de réussite
Exemple de certificat de réussite