Gestion des versions

Récupérer une ancienne version

Si vous devez travailler sur une ancienne version tout en conservant l'état actuel du projet, vous pouvez créer une nouvelle branche à partir d'un commit précis :


                git checkout -b <nomDeLaNouvelleBranche> <SHA>
                

Ou avec la commande moderne :


                git switch -c <nomDeLaNouvelleBranche> <SHA>
                

Revenir à une ancienne version

Si vous voulez annuler tous les changements après un commit précis :


                git reset --hard <SHA>
                

Attention, cette action supprime définitivement toutes les versions situées après celle sélectionnée. Les modifications ne seront plus récupérables par Git.

Renommer des versions

Pour renommer le dernier commit :


                    git commit --amend -m "Nouveau message"
                

Pour renommer un commit plus ancien :

  1. Identifiez le nombre de commits à remonter, puis lancez un rebase interactif :
    
                            git rebase -i HEAD~n
                        
  2. L'éditeur de code lié à Git s'ouvre avec la liste des commits ciblés.
  3. Remplacez le mot pick par reword pour le commit que vous souhaitez renommer.
  4. Sauvegardez puis fermez l'éditeur.
  5. Vous pourrez alors saisir votre nouveau message de commit.

Fusionner des versions

Pour fusionner plusieurs commits :

  1. Identifiez le nombre de commits à remonter, puis lancez un rebase interactif :
    
                            git rebase -i HEAD~n
                        
  2. L'éditeur de code lié à Git s'ouvre avec la liste des commits ciblés.
  3. Remplacez le mot pick par squash ou s pour les commits à fusionner.
  4. Sauvegardez puis fermez l'éditeur.

Supprimer des versions

Pour supprimer un ou plusieurs commits :

  1. Identifiez le nombre de commits à remonter, puis lancez un rebase interactif :
    
                            git rebase -i HEAD~n
                        
  2. L'éditeur de code lié à Git s'ouvre avec la liste des commits ciblés.
  3. Effacez les lignes correspondant aux commits que vous voulez supprimer.
  4. Sauvegardez puis fermez l'éditeur.

Modifier des versions

Pour revenir à un ancien commit tout en conservant l'état actuel du projet dans votre espace de travail, vous pouvez utiliser la commande git reset --soft <SHA>. Remplacez <SHA> par l'identifiant du commit auquel vous voulez revenir. Cette action retire les derniers commits de l'historique, mais place les modifications dans l'index (prêtes à être revalidées) :


                    git reset --soft <SHA>
                

Vous pouvez ensuite modifier librement vos fichiers et effectuer un nouveau commit :


                    git commit -m "Nouveau message"
                

Partager un dépot dont l'historique differt du dépot distant

Si vous avez modifié l'historique localement (par exemple, en réécrivant des commits via un rebase ou un reset) et que cet historique diffère de celui du dépôt distant, Git refusera par défaut de mettre à jour le dépôt distant pour éviter les conflits.

Pour forcer l'écrasement de l'historique du dépôt distant avec le vôtre, vous pouvez utiliser la commande suivante :


                    git push origin <nomDeLaBranche> --force
                

Cette commande est adaptée lorsque vous travaillez seul. Cependant, en contexte collaboratif, il est préférable d'utiliser l'option --force-with-lease. Elle garantit que l'historique du dépôt distant n'a pas été modifié depuis votre dernière synchronisation, prévenant ainsi l'écrasement involontaire des modifications apportées par vos collègues.


                    git push origin <nomDeLaBranche> --force-with-lease
                

Bien que cette option permette une gestion plus prudente et sécurisée de l'historique, il est fortement recommandé de se concerter avec l'équipe avant d'apporter des modifications à l'historique du dépôt distant.