• 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 vos erreurs sur votre dépôt local

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

Quand vous utilisez Git, au début, vous pouvez avoir l’impression que la vie n’est pas un long fleuve tranquille.  :'(

Git est un outil merveilleux, mais on a vite fait de créer une branche alors qu’on ne le souhaitait pas, de modifier la master ou encore d’oublier des fichiers dans ses commits. Mais ne vous inquiétez pas, nous allons voir ensemble que toutes ces petites erreurs ne sont pas difficiles à corriger avec les bonnes techniques. Nous allons maintenant créer un petit bac à sable pour nous entraîner !

Mettons en œuvre ce que nous avons vu dans la partie précédente.

Créons un dépôt Git que l’on va nommer Test.

Créez un dépôt local
Créez un dépôt local "Test"

Initialisez le dépôt avec la commande git init.

Affichez les dossiers masqués
Affichez les dossiers masqués

Votre dépôt est maintenant initialisé, et si vous faites apparaître les dossiers masqués, vous pouvez voir le dossier .git.

Git gère les versions de vos travaux locaux à travers 3 zones locales majeures :

  • le répertoire de travail (working directory/WD) ;

  • l’index, ou stage (nous préférerons le second terme) ;

  • le dépôt local (Git directory/repository).

3 zones locales
3 zones locales

L'index, ou stage, désigne tous les fichiers modifiés que vous souhaitez voir apparaître dans votre prochain commit. C'est avec la fonction  git add  que l'on ajoute un fichier au stage. 

Le dépôt local est l'historique de l'ensemble de vos actions (commits, configurations...). L'archivage se fait principalement avec la commande  git commit.  Il est possible d'accéder à cet historique en faisant un  git reflog  qui affichera toutes vos actions et leurs SHA. Le SHA, c'est ce grand code qui vous permettra de revenir à un commit exact. C'est l’identifiant de votre action !

Passons à nos erreurs ! :pirate:

J’ai créé une branche que je n’aurai pas dû créer

Votre bac à sable est prêt !

Avant de créer une branche, vous devez créer votre branche principale (master). Pour créer la branche master, vous devez simplement ajouter un fichier et le commiter.

Créez un fichier "PremierFichier.txt" dans votre répertoire Test, et ajoutez-le avec la commande :

git add PremierFichier.txt
git commit

On vous demande alors d'indiquer le message du commit puis de valider. Pour valider le message, une fois que vous l'avez écrit, appuyez sur Echap (votre curseur va basculer sur la dernière ligne) et tapez  :x. Cette commande va sauvegarder et quitter l'éditeur des messages de commit.

 

Nous allons maintenant créer une branche (autre que la master).

git branch brancheTest

Cette commande, comme nous l'avons vu précédemment, va créer la branche brancheTest.

Nous pouvons d'ailleurs le vérifier avec la commande :

Youppiiii !:ange:

Arf... En fait, non, nous voulions ajouter nos fichiers avant de la créer et nous sommes maintenant bloqués avec cette branche que nous ne voulions pas tout de suite. :euh::euh::euh:

Heureusement, il est très simple sous Git de supprimer une branche que nous venons de créer. Pour cela, il suffit d'exécuter la commande :

git branch -d brancheTest

Tadammm !  :magicien: Notre branche est supprimée et nous pouvons ajouter dans un premier temps nos fichiers avant de créer la branche.

Attention, si toutefois vous avez déjà fait des modifications dans la branche que vous souhaitez supprimer, il faudra soit faire un commit de vos modifications, soit mettre vos modifications de côté, et ça, je vous l'expliquerai un peu plus tard ; soit forcer la suppression en faisant :

git branch -D brancheTest

J’ai modifié la branche principale

Nous allons maintenant voir le cas où vous avez modifié votre branche master par erreur.  :waw: Nous allons dans un premier temps voir ensemble le cas où vous avez modifié votre branche master mais que vous n'avez pas encore fait le commit, et nous verrons dans un second temps le cas où vous avez commité.

Vous avez modifié votre branche master avant de créer votre branche et vous n'avez pas fait le commit. Ce cas est un peu plus simple. Nous allons faire ce qu'on appelle une remise. La remise va permettre de mettre vos modifications de côté, le temps de créer votre nouvelle branche et ensuite appliquer cette remise sur la nouvelle branche. :-°

Afin de voir comment cela fonctionne, allez sur votre branche master, modifiez des fichiers. Vous pouvez à tout moment voir à quel état sont vos fichiers en faisant :

git status

Vous pouvez voir vos fichiers qui ont été modifiés mais qui n'ont pas encore été commités.

Nous allons donc créer une remise.

git stash

Cela vous donne :

Vous pouvez maintenant vous assurer que votre branche master est de nouveau propre, en faisant un nouveau git status

Vous devriez avoir :

Parfait ! C'est exactement ce que nous voulions. Nous allons maintenant créer notre branche "brancheCommit".

git branch brancheCommit

Nous obtenons donc :

Nous allons basculer sur cette branche.

git checkout brancheCommit

Ce qui nous donne :

Et finalement, nous allons pouvoir appliquer la remise, afin de récupérer nos modifications sur notre nouvelle branche.

git stash apply

Cette commande va appliquer la dernière remise qui a été faite. Si pour une raison ou une autre, vous avez créé plusieurs remises, et que la dernière n'est pas celle que vous souhaitiez appliquer, pas de panique, il est possible d'appliquer une autre remise.

Nous allons d'abord regarder la liste de nos remises. Pour ce faire :

git stash list

Cette commande va nous retourner un "tableau" des remises avec des identifiants du style :

Il suffira alors d'appeler la commande git stash  en indiquant l'identifiant. 

git stash apply stash@{0}

Et voila, le tour est joué ! :D

Maintenant, admettons que vous ayez réalisé vos modifications et qu'en plus vous ayez fait le commit. Le cas est plus complexe, puisque vous avez enregistré vos modifications sur la branche master, alors que vous ne deviez pas.

Allez-y, modifiez des fichiers, et réalisez le commit. :'(

Nous allons devoir aller analyser vos derniers commits avec la fonction  git log, afin de pouvoir récupérer l'identifiant du commit que l'on appelle couramment le hash. Par défaut, git log  va vous lister par ordre chronologique inversé tous vos commits réalisés.

$ git log 
commit ca83a6dff817ec66f443420071545390a954664949
Author: Marc <Marc@gee-mail.com>
Date: Mon Mar 19 21:52:11 2019 -0700

Maintenant que vous disposez de votre identifiant, gardez-le bien de côté. Vérifiez bien que vous êtes sur votre branche master et réalisez la commande suivante :

git reset --hard HEAD^

Cette ligne de commande va permettre de supprimer de la branche master votre dernier commit.  Le Head^ indique que c'est bien le dernier commit que nous voulons supprimer.

Nous allons maintenant créer notre nouvelle branche.

git branch brancheCommit

Nous allons basculer sur cette branche.

git checkout brancheCommit

Maintenant que nous sommes sur la bonne branche, nous allons de nouveau faire un  git reset, mais celui-ci va permettre d'appliquer ce commit sur notre nouvelle branche ! Il n'est pas nécessaire d'écrire l'identifiant en entier. Seuls les 8 premiers caractères sont nécessaires. 

git reset --hard ca83a6df

Et voila, le tour est joué ! :D

Je souhaite changer le message de mon commit

Lorsque l'on travaille sur un projet avec Git, il est très important, lorsque l'on propage les modifications, de bien marquer dans le message descriptif les modifications que l'on a effectuées. Si jamais vous faites une erreur dans l'un de vos messages de commit, il est tout à fait possible de changer le message après coup.

Imaginons que vous veniez de faire un commit et que vous ayez fait une erreur dans votre message. L'exécution de cette commande, lorsqu'aucun élément n'est encore modifié, vous permet de modifier le message du commit précédent sans modifier son instantané. L'option -m permet de transmettre le nouveau message.

git commit --amend -m "Votre nouveau message de commit"

Et on vérifie avec  git log  :

Elle est pas belle la vie ? :p

J’ai oublié un fichier dans mon dernier commit

Imaginons maintenant (je sais, il faut beaucoup d'imagination dans ce cours) :D que vous ayez fait votre commit mais que vous réalisiez que vous avez oublié un fichier. :honte: Ce n'est pas bien grave ! Nous allons réutiliser la commande   git --amend, mais d'une autre manière. La fonction  git --amend, si vous avez bien compris, permet de modifier le dernier commit. 

Nous allons donc réutiliser cette fonction, mais sans le -m qui permettait de modifier son message.

Nous allons dans un premier temps ajouter notre fichier, et dans un deuxième temps réaliser le  git --amend.

git add FichierOublie.txt
git commit --amend --no-edit

Votre fichier a été ajouté à votre commit et grâce à la commande --no-edit que nous avons ajoutée, nous n'avons pas modifié le message du commit.

Pour résumer, git commit --amend vous permet de sélectionner le dernier commit afin d'y ajouter de nouveaux changements en attente. Vous pouvez ajouter ou supprimer des changements  afin de les appliquer avec  commit --amend. Si aucun changement n'est en attente,  --amend  vous permet de modifier le dernier message de log du commit avec -m.

Vous savez maintenant comment corriger les erreurs les plus courantes sur votre dépôt local. Mais comment procéder si vous vous trompez sur votre dépôt distant ? C'est ce que nous allons découvrir dans le prochain chapitre !

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