Notions de base du branchement Git
La possibilité de créer des branches facilement est l'une des meilleures fonctionnalités de Git. La création de branches dans d'autres systèmes de contrôle de version peut être coûteuse en termes d'espace et d'exigences de traitement. Le branchement Git est efficace. Les utilisateurs sont donc plus enclins à utiliser des branches dans Git.
Un workflow de branchement
Supposons que vous ayez commencé un nouveau projet appelé myvideogame. Il a une seule branche. Le nom par défaut de la branche initiale dans Git est appelé master. Il est automatiquement créé. Créons le référentiel Git myvideogame.
$ mkdir monjeuvidéo$ cd mon jeu vidéo
$ git init
Vous avez créé un dépôt Git vide. Ajoutons notre conception.txt contenant du texte.
$ echo "Décision de conception 1 : ajouter des images" >> conception.SMS$ echo "Décision de conception 2 : Écrire le code" >> conception.SMS
$ git ajouter -A
$ git commit -m "C0 : fichier de conception ajouté"
Ajoutons quelques modifications supplémentaires :
$ echo "Design Decision 3: Test Game" >> design.SMS$ git ajouter -A
$ git commit -m "C1 : Fichier de conception modifié"
Si vous consultez l'historique, vous trouverez :
$ git log --oneline6a09bd6 C1 : Fichier de conception modifié
5f18d89 C0 : Ajout du fichier de conception
Si vous vérifiez l'état de Git et toutes les branches qui ont été créées (à l'aide de la commande : git branch -a), vous voyez :
$ git statutSur le maître de branche
rien à valider, répertoire de travail propre
$ git branche -a
* Maître
Actuellement, vous êtes dans la situation suivante :
Vous avez effectué deux commits dans la branche master.
Supposons que vous ayez trouvé des bogues dans vos tests de jeu, mais que vous ne vouliez pas résoudre le problème dans la branche master parce que vous ne voulez pas encore jouer avec la conception d'origine. Vous pouvez donc créer une nouvelle branche appelée bugfix :
$ git branch correctifMaintenant, si vous vérifiez toutes les branches :
$ git branche -acorrection d'un bug
* Maître
Maintenant, vous avez créé une nouvelle branche appelée bugfix. La situation peut être visualisée ainsi :
Cependant, l'étoile (*) à côté de la branche master signifie que vous êtes toujours dans le master. Si vous apportez des modifications, cela ira toujours dans la branche master. Vous pouvez utiliser la commande checkout pour changer de branche :
$ git checkout correction de bogueBasculé vers la branche 'bugfix'
Vous pouvez vérifier quelle branche vous utilisez avec la commande status ou "branch -a" :
$ git statutCorrection d'un bug sur la branche
rien à valider, répertoire de travail propre
$ git branche -a
* correction d'un bug
Maître
Maintenant, corrigeons le bug :
$ echo "Correction de bogue 1" >> conception.SMS$ git ajouter -A
$ git commit -m "C2: Bug Fixed 1"
Vous avez créé une situation comme celle-ci :
La branche master n'a pas le changement C2. Vous pouvez facilement le vérifier en consultant l'historique des deux branches.
Tout d'abord, l'historique de la branche bugfix :
$ git statutCorrection d'un bug sur la branche
rien à valider, répertoire de travail propre
$ git log --oneline
e8f615b C2 : Bug corrigé 1
6a09bd6 C1 : Fichier de conception modifié
5f18d89 C0 : Ajout du fichier de conception
Ensuite, vous pouvez passer à la branche master et vérifier son historique :
$ git checkout maîtreBasculé vers la branche 'master'
$ git statut
Sur le maître de branche
rien à valider, répertoire de travail propre
$ git log --oneline
6a09bd6 C1 : Fichier de conception modifié
5f18d89 C0 : Ajout du fichier de conception
Vous pouvez voir que la branche master n'a pas les modifications de la branche bugfix.
Vous pouvez toujours créer une nouvelle branche à partir de la branche actuelle dans laquelle vous vous trouvez. Supposons que vous souhaitiez créer une autre branche qui contiendra des fonctionnalités expérimentales. Vous pouvez créer la branche à partir de master et y ajouter des fonctionnalités expérimentales :
$ git statutSur le maître de branche
rien à valider, répertoire de travail propre
$ git branch expérimental
$ git checkout expérimental
Passé à la branche « expérimental »
$ git statut
Sur branche expérimentale
rien à valider, répertoire de travail propre
$ echo "Ajout de fonctionnalités d'expérimentation" >> conception.SMS
$ git ajouter -A
$ git commit -m "C3 : Ajout de fonctionnalités expérimentales"
[expérimental 637bc20] C3 : Ajout de fonctionnalités expérimentales
1 fichier modifié, 1 insertion (+)
Si vous consultez l'historique de votre branche expérimentale, vous verrez :
$ git statutSur branche expérimentale
rien à valider, répertoire de travail propre
$ git log --oneline
637bc20 C3 : Ajout de fonctionnalités expérimentales
6a09bd6 C1 : Fichier de conception modifié
5f18d89 C0 : Ajout du fichier de conception
Vous remarquerez que vous n'avez pas le commit C2 qui a été créé dans la branche bugfix. Parce que la branche expérimentale est créée à partir de la branche principale, elle ne voit pas les changements de correction de bogues. Vous avez la situation suivante :
Conclusion
Toutes nos félicitations! Vous avez appris à brancher.
Les branches Git sont faciles et rapides à créer. C'est l'une des raisons de la popularité de Git. Si vous souhaitez devenir un utilisateur compétent de Git, vous devez maîtriser les branches Git.
Une étude plus approfondie:
https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging