branche git
Ce document examine en détail la commande git branch
et aborde le modèle de création de branching Git dans son ensemble. Le branching est une fonctionnalité disponible dans la plupart des systèmes de contrôle de version modernes. Dans d'autres systèmes de contrôle de version, cette opération peut être gourmande à la fois en temps et en espace disque. Dans Git, les branches font partie de votre process de développement quotidien. Elles constituent un pointeur efficace vers un instantané de vos changements. Lorsque vous souhaitez ajouter une nouvelle fonctionnalité ou correction de bug (quelle que soit sa taille), vous créez une branche pour encapsuler vos changements. Il est ainsi plus compliqué de merger du code instable dans la base de code principale, et vous avez l'opportunité de nettoyer votre historique avant de le merger dans la branche main.
Ce document examine en détail la commande git branch
et aborde le modèle de création de branching Git dans son ensemble. Le branching est une fonctionnalité disponible dans la plupart des systèmes de contrôle de version modernes. Dans d'autres systèmes de contrôle de version, cette opération peut être gourmande à la fois en temps et en espace disque. Dans Git, les branches font partie de votre process de développement quotidien. Elles constituent un pointeur efficace vers un instantané de vos changements. Lorsque vous souhaitez ajouter une nouvelle fonctionnalité ou correction de bug (quelle que soit sa taille), vous créez une branche pour encapsuler vos changements. Il est ainsi plus compliqué de merger du code instable dans la base de code principale, et vous avez l'opportunité de nettoyer votre historique avant de le merger dans la branche main.
Ressource connexe
Commande git log avancée
DÉCOUVRIR LA SOLUTION
Découvrir Git avec Bitbucket Cloud
Le schéma ci-dessus illustre un dépôt comprenant deux lignes de développement distinctes : l'une est destinée à une petite fonctionnalité et l'autre, à une fonctionnalité utilisée à plus long terme. Le développement de fonctionnalités dans des branches vous permet de travailler sur deux fonctionnalités en parallèle. De plus, vous évitez de polluer la branche principale (main
) avec du code douteux.
L'implémentation des branches Git est beaucoup plus légère que d'autres modèles de système de contrôle de version. Au lieu de copier des fichiers de répertoire en répertoire, Git stocke une branche en tant que référence à un commit. En ce sens, une branche représente la pointe d'une série de commits, ce n'est pas un conteneur de commits. L'historique d'une branche est extrapolé à l'aide des relations entre les commits.
Tandis que vous poursuivez votre lecture, n'oubliez pas que les branches Git sont différentes des branches SVN. Alors que les branches SVN sont utilisées de manière occasionnelle pour marquer les étapes importantes de votre développement, les branches Git font partie intégrante de votre workflow quotidien. La section suivante étudie en détail l'architecture de création de branches Git interne.
Fonctionnement
Une branche représente une ligne de développement indépendante. Les branches schématisent de façon abstraite le process d'édition, de staging et de commit. Vous pouvez les considérer comme un moyen de demander un nouveau répertoire de travail, une nouvelle zone de staging et un nouvel historique de projet. Les nouveaux commits sont enregistrés dans l'historique de la branche actuelle, ce qui provoque la création d'un fork dans l'historique du projet.
La commande git branch
sert à créer, à répertorier, à renommer et à supprimer des branches. En revanche, elle ne permet pas de basculer entre les branches ou de reconstituer un historique forké. C'est la raison pour laquelle la commande git branch
est étroitement liée aux commandes git checkout et git merge.
Options communes
git branch
Permet de répertorier toutes les branches de votre dépôt. Cette commande est synonyme de git branch --list.
git branch <branch>
Permet de créer une branche nommée <branch>
. Cette opération ne permet pas de faire un check-out de la nouvelle branche.
git branch -d <branch>
Supprimez la branche spécifiée. Ceci est une opération « sûre » dans la mesure où Git vous empêche de supprimer la branche lorsqu'elle contient des changements non mergés.
git branch -D <branch>
Forcez la suppression de la branche spécifiée, même lorsqu'elle contient des changements non mergés. C'est la commande à utiliser si vous souhaitez supprimer définitivement tous les commits associés à une ligne de développement spécifique.
git branch -m <branch>
Permet de renommer la branche actuelle en <branch>
.
git branch -a
Permet de répertorier toutes les branches distantes.
Créer des branches
Il est important de comprendre que les branches sont juste des pointeurs vers des commits. Lorsque vous créez une branche, Git doit simplement créer un nouveau pointeur, il ne modifie le dépôt d'aucune manière. Donc, si vous commencez avec un dépôt qui ressemble à ceci :
Ensuite, créez une branche avec la commande suivante :
git branch crazy-experiment
L'historique du dépôt ne change pas. Vous obtenez simplement un nouveau pointeur vers le commit actuel :
Remarque : cette commande permet uniquement de créer la branche. Pour y ajouter des commits, vous devez la sélectionner avec git checkout
, puis exécuter les commandes git add
et git commit
standard.
Création de branches distantes
Jusqu'à présent, nos exemples illustraient tous des opérations sur une branche locale. La commande git branch
fonctionne également sur les branches distantes. Afin d'utiliser des branches distantes, vous devez d'abord configurer un dépôt distant et l'ajouter à la configuration du dépôt local.
$ git remote add new-remote-repo https://bitbucket.com/user/repo.git
# Add remote repo to local repo config
$ git push <new-remote-repo> crazy-experiment~
# pushes the crazy-experiment branch to new-remote-repo
Cette commande fait un push d'une copie de la branche locale crazy-experiment
vers le dépôt distant <remote>.
Suppression de branches
Lorsque vous avez terminé de travailler sur une branche et que vous l'avez mergée dans la base de code principale, vous pouvez la supprimer sans perdre l'historique :
git branch -d crazy-experiment
Toutefois, si la branche n'a pas été mergée, la commande ci-dessus émettra un message d'erreur :
error: The branch 'crazy-experiment' is not fully merged. If you are sure you want to delete it, run 'git branch -D crazy-experiment'.
Vous évitez ainsi de perdre votre accès à toute cette ligne de développement. Si vous souhaitez réellement supprimer la branche (p. ex., en cas d'expérience ratée), utilisez le flag -D
en majuscules :
git branch -D crazy-experiment
Cette opération supprime la branche, quel que soit son état, et sans avertissement. Par conséquent, utilisez-la avec précaution.
La commande précédente supprime une copie locale d'une branche. La branche peut continuer d'exister dans des dépôts distants. Pour supprimer une branche distante, exécutez la commande suivante
git push origin --delete crazy-experiment
ou
git push origin :crazy-experiment
Cette commande fait un push d'un signal de suppression vers le dépôt origin distant, ce qui déclenche la suppression de la branche crazy-experiment
.
Résumé
Dans ce document, nous avons abordé le comportement de branching Git et la commande git branch
. La commande git branch
a pour principales fonctions de créer, répertorier, renommer et supprimer des branches. Pour poursuivre l'exécution sur les branches restantes, elle est couramment utilisée avec d'autres commandes comme git checkout
. Pour en savoir plus sur les opérations de branche avec git checkout
, comme le basculement et le merge de branche, consultez la page git checkout.
Par rapport aux autres systèmes de contrôle de version, les opérations de branche Git sont économiques et fréquemment utilisées. Cette flexibilité permet de puissantes personnalisations du workflow Git. Pour de plus amples informations sur les workflows Git, consultez nos pages de discussion approfondies à ce sujet : Workflow de branche par fonctionnalité, Workflow GitFlow et Workflow de duplication (fork).
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.