Introduction
Dans ce laboratoire (lab), vous apprendrez à vérifier si une branche Git a été supprimée localement. Nous commencerons par vérifier l'absence d'une branche spécifique en utilisant la commande git branch pour nous assurer d'avoir un état de départ propre. Ensuite, nous explorerons la commande git reflog, un outil puissant qui enregistre les mises à jour des références dans votre dépôt local, y compris les suppressions de branches, vous permettant ainsi de voir l'historique des modifications. Enfin, nous testerons ces méthodes en travaillant avec une branche récemment supprimée pour confirmer comment vérifier efficacement son statut de suppression locale.
Exécutez git branch pour vérifier l'absence
Dans cette étape, nous allons vérifier qu'une branche spécifique, que nous allons supprimer plus tard, n'existe pas actuellement dans notre dépôt Git. C'est une bonne pratique pour nous assurer de partir d'un état propre avant d'effectuer des opérations telles que la suppression d'une branche.
Tout d'abord, accédez au répertoire de votre projet si vous n'y êtes pas déjà. N'oubliez pas que notre projet est situé à l'emplacement ~/project/my-time-machine.
cd ~/project/my-time-machine
Maintenant, listons les branches existantes dans notre dépôt en utilisant la commande git branch. Par défaut, cette commande affiche les branches locales.
git branch
Vous devriez voir une sortie similaire à celle-ci :
* master
Cette sortie indique que pour le moment, seule la branche master existe et qu'elle est la branche active (indiquée par l'astérisque *).
Dans le cadre de ce laboratoire (lab), nous allons travailler avec une branche nommée feature/new-feature. Vérifions que cette branche n'existe pas encore en exécutant à nouveau la commande git branch. Étant donné que nous venons de l'exécuter et que nous n'avons vu que la branche master, nous savons déjà qu'elle n'est pas présente, mais en exécutant à nouveau la commande, nous renforçons le concept de vérification de l'état des branches.
git branch
La sortie devrait toujours afficher seulement la branche master :
* master
Cela confirme que la branche feature/new-feature n'est pas présente dans notre dépôt pour le moment. C'est l'état que nous attendons avant de créer puis de supprimer cette branche dans les étapes suivantes. Comprendre comment vérifier l'état de vos branches est fondamental pour gérer efficacement l'historique de votre projet.
Vérifiez le git reflog pour la suppression
Dans cette étape, nous allons explorer la commande git reflog, qui est un outil puissant pour récupérer des commits ou des branches perdus. Le reflog (journal des références) enregistre les mises à jour des extrémités des branches et d'autres références dans le dépôt local. Cela signifie qu'il enregistre presque tous les changements que vous effectuez dans votre dépôt, y compris les commits, les fusions (merges), les rebases et même les suppressions de branches.
Tout d'abord, assurez-vous d'être dans le répertoire de votre projet :
cd ~/project/my-time-machine
Maintenant, créons une nouvelle branche que nous allons supprimer plus tard. Cela nous donnera quelque chose à rechercher dans le reflog.
git branch feature/new-feature
Cette commande crée une nouvelle branche nommée feature/new-feature pointant vers le commit actuel. Vérifions qu'elle existe :
git branch
Vous devriez maintenant voir les deux branches :
* master
feature/new-feature
Maintenant, supprimons la branche feature/new-feature en utilisant le drapeau -d, qui est une suppression "sûre" (il empêche la suppression si la branche a des modifications non fusionnées).
git branch -d feature/new-feature
Vous devriez voir une sortie confirmant la suppression :
Deleted branch feature/new-feature (was <commit-id>).
Remplacez <commit-id> par l'identifiant de commit réel affiché dans votre terminal.
Maintenant, vérifions le reflog pour voir si la suppression a été enregistrée.
git reflog
La sortie montrera un historique d'actions. Vous devriez voir une entrée liée à la suppression de la branche, similaire à ceci (la sortie exacte peut varier) :
<commit-id> HEAD@{0}: branch: deleted feature/new-feature
<commit-id> HEAD@{1}: branch: Created from <another-commit-id>
... (autres entrées du reflog)
L'entrée du reflog HEAD@{0}: branch: deleted feature/new-feature indique que la branche feature/new-feature a été supprimée. HEAD@{0} fait référence à la dernière action. Cela démontre que même si la branche n'apparaît plus dans git branch, sa suppression est enregistrée dans le reflog, ce qui la rend potentiellement récupérable.
Comprendre le git reflog est crucial car il agit comme un filet de sécurité. Si vous supprimez accidentellement une branche ou perdez des commits en raison d'un rebase ou d'une autre opération, le reflog peut vous aider à trouver l'identifiant de commit dont vous avez besoin pour restaurer votre travail.
Testez avec une branche récemment supprimée
Dans cette étape, nous allons démontrer comment récupérer potentiellement une branche récemment supprimée en utilisant les informations du git reflog. Bien que nous ne récupérerons pas complètement la branche dans ce laboratoire spécifique (car elle n'avait aucun commit unique), nous allons pratiquer la commande utilisée pour la récupération.
Tout d'abord, assurez-vous d'être dans le répertoire de votre projet :
cd ~/project/my-time-machine
Rappelez-vous que dans l'étape précédente, nous avons supprimé la branche feature/new-feature. Vérifions qu'elle est toujours supprimée :
git branch
La sortie devrait toujours afficher seulement la branche master :
* master
Maintenant, regardons à nouveau le reflog pour trouver l'entrée de la branche supprimée.
git reflog
Trouvez la ligne qui dit branch: deleted feature/new-feature. Notez l'identifiant de commit associé à cette entrée. Cela ressemblera à quelque chose comme <commit-id> HEAD@{0}: branch: deleted feature/new-feature.
Pour récupérer une branche supprimée, vous utiliseriez généralement la commande git branch <branch-name> <commit-id>, où <branch-name> est le nom que vous voulez donner à la branche récupérée, et <commit-id> est l'identifiant de commit du reflog où la branche pointait en dernier.
Dans notre cas, la branche feature/new-feature a été créée et immédiatement supprimée sans aucun nouveau commit. Par conséquent, son identifiant de commit dans le reflog sera le même que celui de la pointe de la branche master. La récupérer reviendrait essentiellement à recréer la branche pointant vers le même commit que master.
Simulons la commande de récupération en utilisant l'identifiant de commit que vous avez trouvé dans le reflog pour la branche supprimée. Remplacez <commit-id> par l'identifiant réel de votre sortie reflog.
git branch recovered-feature <commit-id>
Cette commande crée une nouvelle branche nommée recovered-feature pointant vers l'identifiant de commit où feature/new-feature se trouvait avant la suppression.
Maintenant, vérifions à nouveau nos branches :
git branch
Vous devriez maintenant voir la branche recovered-feature répertoriée :
* master
recovered-feature
Cela démontre comment vous pouvez utiliser le git reflog pour trouver l'identifiant de commit d'une branche perdue, puis utiliser git branch pour la recréer. C'est une technique puissante pour récupérer après des suppressions accidentelles ou d'autres opérations modifiant l'historique.
Résumé
Dans ce laboratoire, nous avons appris à vérifier l'absence d'une branche Git locale en utilisant la commande git branch. Nous avons confirmé que avant de créer et de supprimer une branche, il est important de vérifier l'état actuel des branches pour garantir un point de départ propre.
Nous avons également commencé à explorer la commande git reflog, en comprenant son rôle dans le suivi des modifications des références dans le dépôt local, y compris les suppressions de branches, ce qui est crucial pour la récupération potentielle de travaux perdus.



