Cursus
Imaginez que vous rédigiez un livre et que vous souhaitiez expérimenter de nouvelles idées sans altérer l'original. Vous pouvez commencer un nouveau carnet pour chaque idée, en gardant vos brouillons séparés.
Git, un système de contrôle de version, permet aux développeurs de logiciels de faire de même avec le code par le biais de "branches". Chaque branche est comme un chemin de développement séparé, vous permettant d'explorer les changements sans affecter la base de code principale.

Dans cet article, je vous guiderai dans l'utilisation de git clone, en me concentrant sur le clonage de branches spécifiques. Si vous souhaitez en savoir plus sur Git, je vous recommande ce cours d'introduction à Git.
Commençons par une réponse courte pour ceux d'entre vous qui sont pressés. Nous entrerons ensuite dans les détails.
Devenez ingénieur en données
Réponse courte : Comment cloner une branche spécifique
Pour cloner une branche spécifique d'un dépôt git, utilisez la commande suivante :
git clone --single-branch --branch <branch_name> <repository_url>
Remplacez par le nom de la branche souhaitée et par l'URL du dépôt. Cette commande crée une copie locale de la branche spécifiée, ce qui permet un développement immédiat et ciblé sur cette branche.
Exemple
Tout au long de cet article, nous utiliserons ce référentiel. Vous pouvez l'utiliser pour essayer les commandes que vous apprenez sur votre machine. Le référentiel contient trois branches :
main: La branche par défaut contient deux fichiers texte.add-new-file: Une branche où un troisième fichier a été ajouté.modify-file: Une branche où le deuxième fichier a été modifié.
Voici comment nous pouvons cloner la branche ajouter-nouveau-fichier:
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
Qu'est-ce que git clone?
Par défaut, git clone est conçu pour copier l'ensemble du référentiel dans un nouveau répertoire sur votre machine locale, en clonant toutes les branches. Voici la syntaxe :
git clone <repository_url>
Pour cloner le référentiel d'exemple, nous pouvons procéder comme suit :
git clone https://github.com/fran-aubry/git-clone-example.git
Après avoir exécuté cette commande, toutes les branches seront copiées sur votre machine locale. Cependant, les fichiers d'une seule branche sont visibles à la fois, la branche check-out. Après le clonage d'un dépôt, la branche par défaut (généralement appelée main ou master ) est celle qui est extraite.

Changement de branche
Après un clonage complet, nous pouvons passer (checkout) à la branche désirée en utilisant la commandegit checkout. Par exemple, pour extraire la branche modify-file, nous ferons ce qui suit :
git checkout modify-file

Profondeur de clonage
Lorsque vous travaillez avec git, les modifications apportées à une branche sont sauvegardées en les validant à l'aide de la commande git commit . Chaque livraison crée un nouvel état de cette branche, sur lequel vous pouvez revenir plus tard si nécessaire. Curieusement, chaque livraison crée un instantané, et git garde la trace de tous ces instantanés. Vous pouvez à tout moment ramener une branche à l'un de ces instantanés.
La commande git clone, lorsqu'elle est utilisée sans options, télécharge chaque commit de chaque branche sur votre machine locale. En fonction de la taille du projet, cela peut prendre beaucoup de place dans votre entrepôt local. Si vous savez que vous n'aurez pas besoin de tout l'historique, vous pouvez utiliser le paramètre --depth pour spécifier le nombre de commits (ou d'instantanés) que vous souhaitez cloner .
Pour cloner la branche principale tout en ne chargeant que le commit le plus récent, utilisez la commande suivante :
git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git
Clonage d'une branche spécifique
Nous avons appris à cloner un dépôt en utilisant git clone. Par défaut, cette commande clone tout sur votre machine locale. Souvent, vous ne souhaitez travailler que sur une branche spécifique, il est donc plus efficace de ne cloner que cette branche. Cette approche permet d'économiser de l'espace disque et de commencer à travailler immédiatement sans avoir à changer de branche après le clonage.
Pour reprendre l'analogie avec l'écriture d'un livre, imaginez que l'on vous confie la réécriture du deuxième chapitre d'un livre. Dans ce cas, vous ne devez cloner que la branche dans laquelle cette tâche est effectuée, car il n'est pas nécessaire d'avoir accès aux branches liées à la révision d'autres chapitres.
Vous pouvez demander à git de cloner une seule branche en ajoutant les arguments --single-branch et --branch suivis du nom de la branche :
git clone --single-branch --branch <branch_name> <repository_url>
Décortiquons la commande :
git clone: Il s'agit de la commande git de base utilisée pour copier un dépôt depuis une source distante vers votre machine locale.
--single-branch: Cette option indique à Git de ne cloner qu'une seule branche. Si aucune branche n'est spécifiée, la branche par défaut sera clonée.
--branch: Cette option spécifie la branche à cloner. Le <branch_name> est le nom de la branche que vous souhaitez cloner.: Il s'agit de l'URL du référentiel.
Par exemple, pour cloner uniquement le fichier modifier-fichier de notre référentiel, nous pouvons faire ce qui suit :
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
Comment travailler avec une branche clonée
Lorsque vous travaillez sur une branche, vous devez effectuer trois opérations essentielles :
- Sauvegarder votre travail en cours en créant un instantané de l'état actuel.
- Télécharger vos modifications pour que tout le monde puisse y avoir accès.
- Télécharger les modifications d'autres personnes et les fusionner avec les vôtres.
Sauvegarder vos modifications avec git commit
Dans Git, la sauvegarde de votre travail s'appelle la création d'un commit. Ce processus prend un instantané de l'état actuel de la branche sur laquelle vous travaillez.
L'état de la branche est sauvegardé sur votre machine locale après chaque livraison, ce qui vous permet de naviguer entre les différents stades d'avancement.

Pour valider vos modifications dans git, vous utilisez la commande git commit. Cependant, avant de livrer vos modifications, git a besoin de savoir quels fichiers vous souhaitez inclure dans la livraison. Vous indiquez les fichiers à sauvegarder à l'aide de la commande git add. La syntaxe de cette commande est la suivante :
git add <path_to_file>
Dans la syntaxe, est le chemin d'accès au fichier que vous souhaitez livrer. Par exemple, si nous sommes sur la branche modify-file de notre référentiel d'exemple et que nous avons ajouté un paragraphe à file2.txt, vous ajouterez ce fichier en exécutant :
git add file2.txt
Après avoir ajouté tous les fichiers que vous souhaitez inclure dans votre validation, vous pouvez procéder à la validation en exécutant :
git commit -m <message>
Ici, l'argument doit être un message concis entre guillemets, décrivant brièvement les changements. Par exemple :
git commit -m "Add paragraph"
Voici quelques conventions pour le message de validation. Ils sont essentiels pour assurer la clarté et la compréhension de toutes les personnes travaillant sur le projet :
- Utilisez l'impératif : Commencez votre message de livraison par un verbe à la forme impérative (par exemple, "Add", "Fix", "Update"). Par exemple, au lieu de "Ajout d'une nouvelle fonctionnalité", écrivez "Ajout d'une nouvelle fonctionnalité".
- Soyez concis tout en étant descriptif : Essayez de rédiger un message bref, idéalement de moins de 50 caractères. Cependant, privilégiez la clarté dans la description des changements. Au lieu de "Changer des choses", écrivez "Mettre à jour le style de la barre de navigation".
- Évitez les messages génériques : Évitez les messages vagues tels que "Corrigez les bogues" ou "Apportez des améliorations". Au lieu de cela, soyez précis : "Corriger un bogue dans la validation du formulaire de connexion" ou "Améliorer la lisibilité de la documentation".
Télécharger vos modifications avec git push
Lorsque vous effectuez une validation, vous créez un instantané des modifications sur votre machine locale. Pour que d'autres personnes puissent accéder à vos modifications, vous devez les télécharger. Pour ce faire, vous utilisez la commande push.
La syntaxe de base de la commande push dans Git est la suivante :
git push <remote> <branch>
Voyons cela en détail :
: Il s'agit du nom du dépôt distant dans lequel vous souhaitez transférer vos modifications. Par défaut, lorsque vous clonez un dépôt, le dépôt distant est appelé origin.: Il s'agit du nom de la branche dont les modifications doivent être transférées dans le référentiel distant. Si vous ignorez cet argument, Git poussera les modifications en fonction de la branche actuelle et des configurations de suivi à distance.
Voici quelques cas d'utilisation courante de git push:
- Pousser les changements de la branche actuelle :
git push - Pousser les changements d'une branche spécifique :
git push origin
Télécharger les modifications avec git pull
Git permet à de grandes équipes de travailler simultanément sur un même projet. Lorsque des collègues éditent la même branche que celle sur laquelle vous travaillez, votre branche locale peut devenir obsolète par rapport à la branche distante.
Pour télécharger les commits d'autres personnes, nous utilisons la commande git pull. La syntaxe de base de la commande push dans git est la suivante :
git pull <remote> <branch>
Voici ce que fait chaque paramètre :
: Il s'agit du nom du référentiel distant à partir duquel vous souhaitez extraire des données. Par défaut, ce dépôt est nommé origin.: Il s'agit du nom de la branche dont vous souhaitez extraire les modifications. S'il n'est pas spécifié, git utilise la branche courante ainsi que sa branche amont.
Voici quelques cas d'utilisation courante de git pull:
- Tirer les changements de la branche actuelle :
git pull - Tirer les modifications d'une branche spécifique :
git pull origin
Flux de travail Commit-pull-push
Lorsque vous utilisez Git, je vous recommande d'extraire fréquemment les mises à jour afin de vous assurer que votre branche locale reste à jour. Je vous conseille de respecter les bonnes pratiques suivantes :
- Avant de commencer votre travail, récupérez les dernières mises à jour de votre branche actuelle afin de vous assurer que vous travaillez sur la version la plus récente.
- Effectuez des livraisons fréquentes, en veillant à ce que chaque livraison se concentre sur des modifications mineures et logiquement liées.
- Après avoir effectué quelques modifications et créé un commit, tirez à nouveau pour mettre à jour votre branche, au cas où quelqu'un d'autre aurait fait des mises à jour en même temps.
- Enfin, transférez vos modifications vers le référentiel distant.

Conflits Git
Lorsque vous exécutez la commandegit pull pour télécharger des modifications depuis un dépôt distant, il est possible de rencontrer un scénario dans lequel un autre commit a modifié les mêmes lignes que vos commits locaux. Git tente de fusionner automatiquement les modifications, et dans de nombreux cas, il y parvient. Par exemple, si des modifications sont apportées à différentes parties d'un même fichier, Git peut les fusionner de manière transparente car les modifications affectent des sections distinctes.
Cependant, si vous et un autre contributeur avez édité le même paragraphe, git sera incapable de déterminer quelle version conserver, ce qui entraînera un conflit de fusion. Dans ce cas, vous devrez résoudre manuellement le conflit en décidant des modifications à conserver.
Pour plus d'informations sur la résolution des conflits, je vous recommande de lire cet article sur comment résoudre les conflits de fusion dans Git.
Téléchargement GitHub
Dans certains cas, vous souhaitez disposer d'une copie locale d'un référentiel pour l'utiliser sans avoir l'intention de le modifier. S'il s'agit d'un dépôt public, il n'est pas nécessaire d'installer Git sur votre machine locale. Vous pouvez télécharger directement le dépôt depuis GitHub en cliquant sur le bouton Code suivi du boutonDownload Zip, comme indiqué ci-dessous :

Conclusion
Le clonage Git vous permet de copier un dépôt Git sur votre machine locale, ce qui vous permet d'utiliser le code ou de le développer en y ajoutant de nouvelles fonctionnalités. Lors du clonage d'un référentiel, toutes les branches sont téléchargées, ce qui peut consommer une quantité importante d'espace disque.
Les branches sont utilisées pour travailler sur des changements ou des fonctionnalités spécifiques. Le clonage d'une branche spécifique vous permet de contribuer à ces changements sans télécharger de travaux non liés, ce qui nécessite beaucoup moins d'espace disque et permet de garder votre disque local plus propre.
Si vous souhaitez en savoir plus sur le sujet, je vous recommande ce qui suit Tutoriel GitHub et Git pour les débutants.