Utilisation de la fusion et de la suppression de branches
Créons d'abord une branche master, insérons quelques commits, créons une nouvelle branche appelée features, ajoutons quelques commits, puis revenons au master et commitons à nouveau. Voici les commandes :
$ mkdir monjeu$ cd monjeu
$ git init
$ echo "Décision de conception 1 : Brainstarm" >> conception.SMS
$ git ajouter -A
$ git commit -m "C0: Projet démarré"
$ echo "Décision de conception 2 : Écrire le code" >> conception.SMS
$ git ajouter -A
$ git commit -m "C1 : code soumis"
$ git branch fonctionnalités
$ git checkout fonctionnalités
$ echo "Ajouter une fonctionnalité 1" >> fonctionnalité.SMS
$ git ajouter -A
$ git commit -m "C2 : Fonctionnalité 1"
$ echo "Ajouter une fonctionnalité 2" >> fonctionnalité.SMS
$ git ajouter -A
$ git commit -m "C3 : Fonctionnalité 2"
$ git checkout maître
$ echo "Modifier à nouveau le maître" >> conception.SMS
$ git ajouter -A
$ git commit -m "C4: Master Modified"
Les commandes ci-dessus ont créé la situation suivante :
Vous pouvez consulter l'historique des deux branches pour voir quels commits elles ont :
$ git statutSur le maître de branche
rien à valider, répertoire de travail propre
$ git log --oneline
2031b83 C4 : Maître modifié
1c0b64c C1 : Code soumis
$ git checkout fonctionnalités
Passé à la branche « fonctionnalités »
$ git log --oneline
93d220b C3 : caractéristique 2
ad6ddb9 C2 : Fonctionnalité 1
1c0b64c C1 : Code soumis
ec0fb48 C0 : Projet démarré
Supposons maintenant que vous souhaitiez apporter toutes les modifications de la branche de fonctionnalités à notre branche principale. Vous devrez démarrer le processus à partir de la destination de la fusion. Parce que nous voulons fusionner dans la branche master, vous devez lancer le processus à partir de là. Voyons donc la branche master :
$ git checkout maîtreBasculé vers la branche 'master'
$ git statut
Sur le maître de branche
rien à valider, répertoire de travail propre
Créons maintenant la fusion :
$ git merge fonctionnalitésS'il n'y a pas de conflits dans la fusion, un éditeur de texte s'ouvrira avec les commentaires :
Fusionner les « fonctionnalités » de la branche# Veuillez saisir un message de validation pour expliquer pourquoi cette fusion est nécessaire,
# surtout s'il fusionne un amont mis à jour dans une branche thématique.
#
# Les lignes commençant par '#' seront ignorées et un message vide sera annulé
# le commit.
Vous pouvez modifier les commentaires ou accepter ceux par défaut. La sortie de fusion devrait afficher des résultats comme ceci :
Fusion faite par la stratégie 'récursive'.fonctionnalité.txt | 2 ++
1 fichier modifié, 2 insertions (+)
fonction de création du mode 100644.SMS
Après la fusion, vous avez la condition suivante :
Si vous consultez les journaux, vous trouverez :
$ git statutSur le maître de branche
rien à valider, répertoire de travail propre
$ git log --oneline
46539a3 C5 : Fusionner les « fonctionnalités » de la branche
2031b83 C4 : Maître modifié
93d220b C3 : caractéristique 2
ad6ddb9 C2 : Fonctionnalité 1
1c0b64c C1 : Code soumis
ec0fb48 C0 : Projet démarré
Vous avez fusionné les modifications avec succès. Cependant, la branche de fonctionnalité est toujours présente.
$ git branche -afonctionnalités
* Maître
Vous pouvez le supprimer avec la commande suivante :
$ git branch -d fonctionnalitésSi vous vérifiez maintenant, vous ne devriez voir que la branche master :
$ git branche -a* Maître
Conclusion
Assurez-vous de vérifier régulièrement les branches inutilisées et supprimez-les. Vous voulez garder votre référentiel propre pour le rendre facile à naviguer et à comprendre.
Lectures complémentaires :
- https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging