Branches : Travailler en Parallèle¶
Git offre la possibilité de travailler simultanément sur différentes fonctionnalités grâce aux branches. Chaque branche est une version distincte du code, créée à partir d'un point précis de l'historique du projet. Cette approche permet de développer de nouvelles fonctionnalités ou de corriger des bugs sans affecter le code principal.
Pour gérer ces branches, Git utilise des pointeurs. Le pointeur HEAD indique la branche active sur laquelle vous travaillez, tandis que chaque branche possède son propre pointeur qui suit l'évolution de ses commits.
1. Créer une nouvelle branche¶
La branche principale (main ou master) contient généralement le code de production. Pour développer de nouvelles fonctionnalités, il est recommandé de créer une branche dédiée à partir de la branche principale. Une fois le développement terminé, cette branche peut être fusionnée avec la branche principale.
-
Créez une nouvelle branche
devà partir de la branche principalemain:La commande
checkoutLa commande
checkoutpermet de se déplacer entre les branches. Dans cet exemple, elle permet de se déplacer sur la nouvelle branchedev. Elle permet aussi de créer une nouvelle branche si elle n'existe pas déjà et de s'y déplacer en une seule commande avec l'option-b: -
Vérifiez que vous êtes sur la nouvelle branche :
2. Fusionner des branches¶
Une fois que vous avez terminé de travailler sur une branche, vous pouvez fusionner son contenu avec une autre branche. Par exemple, pour fusionner la branche dev avec la branche principale main, vous pouvez suivre ces étapes :
-
Ajoutez une modification à la branche
dev:Dans votre projet, créez le fichier
MainActivity.javasous le répertoiresrc. Ajoutez le code nécessaire à ce fichier, puis enregistrez les modifications dans votre dépôt local.Facultatif
Vous pouvez pousser la branche
devsur GitHub pour sauvegarder votre travail : -
Consultez l'historique des commits pour vérifier que la branche
devcontient bien la modification :Les options de la commande
log--onelineaffiche chaque commit sur une seule ligne.
-
Pour fusionner la branche
devavec la branche principalemain, vous devez d'abord vous déplacer sur la branchemain: -
Ensuite, fusionnez la branche
devavec la branchemain:La commande
mergeCette commande fusionne le contenu de la branche spécifiée (
dev) avec la branche active (main).Voir Aide-Mémoire Git pour plus d'informations sur la fusion. -
Enfin, vérifiez que la fusion a été effectuée avec succès :
Les options de la commande
log--graphaffiche le graphe des branches.--allaffiche tous les commits, même ceux qui ne sont pas sur la branche active.
Les modifications de la branche
devont été fusionnées avec succès dans la branche principalemain.
Conflits de fusion
Si des conflits surviennent lors de la fusion des branches, Git vous informera des fichiers concernés. Vous devrez alors résoudre ces conflits manuellement avant de finaliser la fusion.
Exemple de conflit
Si vous modifiez le fichier README.md à la fois sur la branche dev et sur la branche main, Git ne pourra pas fusionner automatiquement ces modifications. Vous devrez résoudre le conflit manuellement en choisissant les parties à conserver.
Dans ce cas, Git ajoutera des marqueurs de conflit (<<<<<<<, =======, >>>>>>>) pour vous aider à identifier les parties conflictuelles.
<<<<<<<représente le début du conflit=======sépare les deux versions en conflit>>>>>>>marque la fin du conflit.
3. Supprimer une branche¶
Une fois que vous avez terminé de travailler sur une branche et que vous avez fusionné son contenu avec une autre branche, vous pouvez supprimer la branche inutile. Par exemple, pour supprimer la branche dev après l'avoir fusionnée avec la branche main, vous pouvez suivre ces étapes :
-
Supprimez la branche
dev:La commande
branch -dCette commande supprime la branche spécifiée (
dev) après avoir vérifié que son contenu a été fusionné avec la branche active. Si vous souhaitez supprimer une branche sans vérification, utilisez l'option-D: -
Vérifiez que la branche a bien été supprimée :
La branche
deva été supprimée et vous êtes de retour sur la branche principalemain.