Opérations de base sur les branches Git

GitBeginner
Pratiquer maintenant

Introduction

Bon retour parmi nous, voyageur temporel ! Aujourd'hui, nous allons faire passer vos compétences de voyage dans le temps au niveau supérieur grâce aux branches Git !

Imaginez que vous puissiez créer des univers alternatifs pour votre projet, où vous pourriez expérimenter des idées folles sans perturber votre chronologie principale. C'est exactement ce que les branches Git vous permettent de faire ! Elles agissent comme des dimensions parallèles pour votre code, vous permettant de développer de nouvelles fonctionnalités, de corriger des bugs ou de tester des expériences audacieuses sans aucune crainte.

À la fin de cet atelier, vous serez un maître du multivers, capable de créer de nouvelles réalités (branches), de sauter de l'une à l'autre (checkout ou switch), de les combiner (merge) et même de supprimer les univers dont vous n'avez plus besoin. Ces super-pouvoirs sont essentiels pour tout développeur voyageant dans le temps, que vous travailliez en solo ou au sein d'une équipe de codeurs explorateurs de dimensions.

Êtes-vous prêt à devenir un sorcier des branches Git ? C'est parti !

Ceci est un atelier guidé, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour terminer chaque étape et acquérir une expérience pratique. Les données historiques montrent qu'il s'agit d'un atelier de niveau débutant avec un taux de réussite de 94 %. Il a reçu un taux d'avis positifs de 100 % de la part des apprenants.

Configuration de votre centre multiversel

Tout d'abord, nous devons créer un centre névralgique pour toutes nos réalités alternatives. Ce sera notre dépôt Git principal.

  1. Ouvrez votre terminal. C'est votre panneau de contrôle pour sauter entre les dimensions.

  2. Naviguez vers votre espace de projet :

cd ~/project

Cette commande change votre répertoire actuel pour le dossier "project" situé dans votre répertoire personnel. Si vous n'êtes pas sûr de l'endroit où vous vous trouvez, vous pouvez utiliser la commande pwd pour afficher votre répertoire de travail actuel. C'est une astuce utile à retenir si jamais vous vous perdez dans le terminal.

  1. Créons un nouveau dossier pour nos expériences multiverselles :
mkdir git-branch-lab
cd git-branch-lab

La commande mkdir crée un nouveau répertoire, puis nous utilisons cd pour y entrer. Cela nous donne une page blanche sur laquelle travailler. Considérez ce nouveau dossier comme la salle de contrôle de notre opération de voyage temporel.

  1. Maintenant, initialisons notre centre (dépôt Git) :
git init

Cette commande crée un nouveau dépôt Git dans le répertoire actuel. Elle configure tous les fichiers nécessaires dont Git a besoin pour commencer à suivre votre projet. Ces fichiers sont cachés dans un dossier nommé .git.

Vous devriez voir un message tel que :

Initialized empty Git repository in /home/labex/project/git-branch-lab/.git/

Félicitations ! Vous venez de créer un centre pour des possibilités infinies ! C'est la fondation sur laquelle toutes vos aventures temporelles seront bâties.

  1. Créons une note pour nous-mêmes (ou nos futurs moi) expliquant la nature de cet endroit :
echo "## Git Branch Lab" > README.md
echo "Ceci est mon centre pour les expériences multiverselles sur les branches Git" >> README.md

Voici ce que font ces commandes :

  • La première commande crée un nouveau fichier nommé README.md et y écrit "## Git Branch Lab". En Markdown, le symbole '#' crée un titre. Ce fichier servira de manuel d'utilisation pour notre centre multiversel.
  • La deuxième commande ajoute une autre ligne à README.md. Le symbole '>>' signifie "ajouter ceci à la fin du fichier". Nous apportons ainsi des précisions à notre manuel.

Si vous êtes curieux de voir ce que vous venez de créer, vous pouvez utiliser la commande cat README.md pour afficher le contenu du fichier. C'est comme lire le manuel d'utilisation de notre centre.

  1. Maintenant, créons notre premier point de sauvegarde (commit) dans ce nouvel univers :
git add README.md
git commit -m "Initial commit: Create the multiverse hub"

Analysons cela :

  • git add README.md indique à Git de commencer à suivre les modifications de README.md. Cela place le fichier dans la zone de transit (staging). Imaginez que vous préparez le fichier pour le voyage.
  • git commit crée un nouveau commit (point de sauvegarde) avec les modifications indexées. C'est comme prendre un instantané de notre univers actuel.
  • L'option -m vous permet de fournir directement un message de validation. Essayez toujours d'écrire des messages clairs et descriptifs ! Ce message est comme une note expliquant ce que nous avons changé dans cet instantané.

Si vous avez un doute sur ce qui a été indexé ou validé, vous pouvez utiliser git status pour vérifier. C'est comme vérifier l'état de votre équipement de voyage temporel.

Création de votre première réalité alternative

Maintenant que notre univers principal (branche master) est configuré, créons notre première réalité alternative !

  1. Créez une nouvelle branche nommée feature-dimension :
git branch feature-dimension

Cette commande crée une nouvelle branche, mais ne vous y bascule pas encore. Considérez cela comme la création d'un univers parallèle alors que vous êtes toujours dans l'original. C'est comme avoir le plan d'une nouvelle réalité sans y avoir encore mis les pieds.

Vous venez de créer une nouvelle chronologie, mais vous n'y êtes pas encore. Voyons toutes les chronologies dont nous disposons :

git branch

Vous devriez voir :

  feature-dimension
* master

L'astérisque * indique la réalité dans laquelle vous vous trouvez actuellement. Pour l'instant, vous êtes toujours dans l'univers principal (master). La branche master est la branche par défaut que Git crée lors de l'initialisation d'un nouveau dépôt.

Astuce : Appuyez sur q pour quitter la liste des branches et revenir à votre terminal.

  1. Plongeons dans notre nouvelle réalité :
git checkout feature-dimension

Cette commande fait deux choses :

  1. Elle bascule votre répertoire de travail actuel vers la branche feature-dimension.
  2. Elle met à jour les fichiers de votre répertoire pour qu'ils correspondent à l'état de la branche feature-dimension. C'est comme franchir un portail vers une nouvelle réalité.

Maintenant, si vous lancez à nouveau git branch, vous verrez :

* feature-dimension
  master

L'astérisque * s'est déplacé, indiquant que vous avez réussi à sauter dans votre nouvelle dimension ! Vous travaillez désormais dans cette réalité alternative.

Alternativement, vous pouvez utiliser git switch feature-dimension pour obtenir le même résultat. git switch est une commande plus récente introduite dans Git 2.23, spécifiquement conçue pour le basculement de branches, ce qui la rend plus claire et intuitive. Les deux commandes mènent au même résultat, mais git switch est généralement préférée pour sa clarté.

Ne vous inquiétez pas si vous ne voyez pas encore de changements dans vos fichiers. Lorsque vous créez une nouvelle branche, elle commence comme une copie exacte de la branche sur laquelle vous étiez. La partie excitante commence lorsque nous effectuons des modifications ! Ces copies initiales garantissent que chaque réalité part de la même base.

Conseil de pro : Dans les versions récentes de Git, vous pouvez créer une nouvelle branche et y basculer en une seule commande : git checkout -b feature-dimension ou git switch -c feature-dimension. C'est comme créer et franchir un portail en un seul mouvement fluide ! L'utilisation de -b avec git checkout ou -c avec git switch combine la création et le basculement de branche en une seule étape.

Si jamais vous vous perdez et ne vous rappelez plus dans quelle dimension (branche) vous êtes, lancez simplement git branch. La branche marquée d'un * est votre emplacement actuel. C'est comme consulter votre position sur une carte du multivers.

Façonner votre nouvelle réalité

Maintenant que nous sommes dans notre nouvelle dimension, apportons des modifications qui n'existent qu'ici. N'oubliez pas que tout ce que nous faisons ici n'affectera pas notre univers principal tant que nous n'aurons pas décidé de les fusionner. Cela nous permet d'expérimenter en toute sécurité sans perturber notre chronologie principale.

  1. Créons un nouvel artefact dans cette réalité :
echo "Ceci est un artefact puissant provenant d'une autre dimension" > dimensional-artifact.txt

Cette commande crée un nouveau fichier nommé dimensional-artifact.txt et y écrit un message. Le symbole > est utilisé pour créer un nouveau fichier (ou écraser un fichier existant) avec le contenu donné. Cet artefact est unique à notre réalité actuelle.

  1. Maintenant, préservons cet artefact dans notre chronologie :
git add dimensional-artifact.txt
git commit -m "Create a powerful interdimensional artifact"

Ces commandes devraient vous être familières depuis l'étape 1. Nous demandons à Git de suivre notre nouveau fichier, puis nous créons un point de sauvegarde avec un message descriptif. Ces commandes reviennent à prendre une photo de l'artefact nouvellement découvert.

  1. Mettons également à jour notre note pour nos futurs moi concernant cette nouvelle réalité :
echo "##### Feature Dimension" >> README.md
echo "Nous avons découvert un artefact puissant dans cette réalité" >> README.md

Ces commandes ajoutent de nouvelles lignes à notre fichier README.md. Le symbole >> ajoute du contenu à la fin d'un fichier existant au lieu de l'écraser. Nous mettons à jour notre manuel d'utilisation pour refléter nos découvertes dans la nouvelle dimension.

  1. Sauvegardons également ces modifications :
git add README.md
git commit -m "Document the discovery of the artifact"

Encore une fois, nous créons un autre point de sauvegarde, cette fois pour notre fichier README.md mis à jour. Nous préservons la documentation actualisée pour nos futurs moi.

Excellent travail ! Vous avez maintenant apporté des modifications dans votre réalité alternative. Ces changements n'existent pour l'instant que dans la branche feature-dimension. Si vous reveniez à la branche master, vous ne verriez pas ces modifications. Cette séparation garantit que nos expérimentations dans une réalité n'impactent pas les autres.

Pour voir la différence entre votre branche actuelle et la branche master, vous pouvez utiliser la commande git diff master. Cela vous montrera tous les changements effectués dans votre réalité actuelle par rapport à la chronologie principale. C'est comme comparer l'état des deux univers.

Fusion des réalités

Maintenant que nous avons fait des découvertes incroyables dans notre réalité alternative, il est temps de les ramener dans notre univers principal. Ce processus s'appelle la fusion (merge).

  1. Tout d'abord, revenons à notre réalité principale :
git checkout master

ou

git switch master

Les deux commandes nous ramènent sur la branche master.

  • git checkout est l'ancienne commande pour changer de branche. Elle existe depuis les débuts de Git et est toujours supportée.
  • git switch est la commande plus récente introduite dans Git 2.23. Elle est conçue pour être plus intuitive et facile à comprendre.

Vous pouvez utiliser l'une ou l'autre, mais git switch est généralement préférée pour sa clarté.

Si vous regardez vos fichiers maintenant, vous remarquerez que votre artefact interdimensionnel a disparu ! Ne vous inquiétez pas, il est en sécurité dans l'autre dimension. Cela démontre que les modifications dans une branche sont isolées des autres branches jusqu'à ce qu'elles soient fusionnées.

  1. Maintenant, fusionnons notre réalité alternative dans la chronologie principale :
git merge feature-dimension

Cette commande demande à Git de prendre toutes les modifications de feature-dimension et de les appliquer à master. C'est comme intégrer les découvertes de notre réalité alternative dans notre univers principal.

Vous devriez voir un message du type :

Updating <hash1>..<hash2>
Fast-forward
 README.md              | 2 ++
 dimensional-artifact.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 dimensional-artifact.txt

Ce résultat vous indique quels fichiers ont été modifiés et combien de lignes ont été ajoutées ou supprimées. "Fast-forward" signifie que Git a pu simplement déplacer la branche master vers l'endroit où se trouvait feature-dimension, car il n'y avait pas de modifications conflictuelles. Une fusion en "avance rapide" (fast-forward) est le type de fusion le plus simple ; elle se produit lorsque la branche dans laquelle vous fusionnez n'a pas changé depuis la création de la branche source.

Félicitations ! Vous venez de combiner deux réalités ! Les modifications apportées dans feature-dimension font désormais partie de notre univers principal. Notre artefact interdimensionnel et la documentation mise à jour sont maintenant présents dans notre branche master.

  1. Confirmons que notre artefact a bien survécu à la fusion :
cat dimensional-artifact.txt
cat README.md

Ces commandes afficheront le contenu des fichiers. Vous devriez voir les modifications effectuées dans la branche feature-dimension. Ces commandes vérifient que la fusion a réussi.

Vous avez réussi à ramener vos découvertes d'une réalité alternative vers la chronologie principale. C'est ainsi que les développeurs intègrent de nouvelles fonctionnalités dans leur projet principal ! C'est un concept fondamental de Git qui permet aux développeurs de travailler sur des fonctionnalités de manière isolée, puis de les intégrer au code source principal lorsqu'elles sont prêtes.

Si vous souhaitez voir la liste de toutes les branches qui ont été fusionnées dans votre branche actuelle, vous pouvez utiliser la commande git branch --merged. Cela peut être utile pour savoir quelles branches ont été intégrées.

Fermeture des portails dimensionnels

Maintenant que nous avons ramené nos découvertes dans la réalité principale, nous pouvons fermer le portail vers notre dimension alternative. En termes Git, nous allons supprimer la branche dont nous n'avons plus besoin.

  1. Fermons notre portail feature-dimension :
git branch -d feature-dimension

L'option -d demande à Git de supprimer la branche, mais seulement si elle a été entièrement fusionnée. C'est une mesure de sécurité pour éviter la perte accidentelle de modifications non fusionnées. Git ne vous permettra de supprimer une branche avec -d que si ses modifications ont été intégrées à la branche sur laquelle vous vous trouvez.

Si vous essayez de supprimer une branche qui n'a pas été entièrement fusionnée, Git vous avertira. Dans ce cas, si vous êtes absolument certain de vouloir supprimer la branche, vous pouvez utiliser l'option -D à la place : git branch -D feature-dimension. Cela force la suppression de la branche quel que soit son état de fusion. Utilisez ce pouvoir avec précaution ! Cette commande ne doit être utilisée que lorsque vous êtes certain de ne plus avoir besoin des modifications de cette branche.

  1. Vérifions quelles réalités existent encore :
git branch

Vous ne devriez plus voir que la branche master. Cela indique que le portail vers la feature-dimension est désormais fermé.

Nettoyer les anciennes branches permet de garder votre multivers organisé. C'est une bonne habitude de fermer les portails vers les dimensions inutiles, surtout lors de travaux sur de grands projets comportant de nombreuses réalités alternatives. Cela maintient votre espace de travail propre et évite toute confusion.

Si vous voulez voir toutes les branches, y compris les branches distantes, vous pouvez utiliser git branch -a. Cela est utile lorsque vous travaillez sur des projets avec plusieurs contributeurs. Les branches distantes sont des copies de branches situées sur d'autres dépôts.

Résumé

Félicitations, maître du multivers ! Vous venez de terminer votre cours accéléré sur la sorcellerie des branches Git. Récapitulons les exploits incroyables que vous avez accomplis :

  1. Vous avez créé un centre pour des possibilités infinies (un nouveau dépôt Git).
  2. Vous avez ouvert un portail vers une réalité alternative (créé une nouvelle branche).
  3. Vous avez appris à sauter entre différentes dimensions (basculer entre les branches avec git checkout ou git switch).
  4. Vous avez fait des découvertes majeures dans un univers parallèle (validé des modifications dans une branche séparée).
  5. Vous avez fusionné deux réalités, ramenant vos découvertes dans la chronologie principale (fusion de branches).
  6. Enfin, vous avez appris à fermer les portails dimensionnels devenus inutiles (suppression de branches).

Ces compétences multiverselles sont cruciales pour tout développeur voyageant dans le temps. En utilisant les branches, vous pouvez :

  • Travailler sur différentes fonctionnalités ou corrections de bugs dans des univers parallèles, sans perturber la chronologie principale.
  • Expérimenter des idées folles dans des réalités alternatives sécurisées.
  • Collaborer avec d'autres développeurs explorateurs, chacun travaillant dans sa propre réalité.
  • Maintenir votre chronologie principale stable et sans bug, en ne fusionnant les nouvelles fonctionnalités que lorsqu'elles sont prêtes.

Bon voyage dimensionnel, et que vos fusions soient toujours sans conflit !