Maison >Problème commun >Comment utiliser git rebase pour fusionner des branches dans Git

Comment utiliser git rebase pour fusionner des branches dans Git

anonymity
anonymityoriginal
2019-04-27 15:20:237934parcourir

Qu'est-ce que le rebase ? Comment utiliser la commande rebase ? Étudions comment utiliser la commande git rebase.

Nous savons qu'il existe deux manières principales d'intégrer les modifications provenant de différentes branches dans Git : la fusion et le rebase. En fait, git rebase et git merge font la même chose. Ils sont tous deux conçus pour fusionner les modifications d’une branche à une autre, mais de manière légèrement différente.

Exemple de commande de fusion

git checkout feature
git merge master

De cette façon, le nouveau commit de fusion dans la branche de fonctionnalité relie l'historique des deux branches ensemble

Fusionner le la bonne nouvelle c'est que c'est une opération sûre. Les branches existantes ne seront pas modifiées

La branche de fonctionnalité introduira un commit de fusion extraterrestre à chaque fois que les modifications en amont seront fusionnées. Si la branche amont est très active, cela polluera plus ou moins l'historique de votre branche

Exemple de commande Rebase

git checkout feature
git rebase master

Cela déplacera toute la branche feature vers la branche master Ensuite, tous les nouveaux commits sur la branche master sont effectivement fusionnés

Cependant, rebase crée un nouveau commit pour chaque commit sur la branche d'origine, réécrivant l'historique du projet et ne le fusionnant pas.

Lors du rebasage de deux branches, le "replay" généré n'a pas besoin d'être appliqué sur la branche cible. Vous pouvez également spécifier une autre branche pour l'application. Vous avez créé un serveur de branche de fonctionnalités, ajouté certaines fonctionnalités au serveur et soumis C3 et C4. Ensuite, j'ai créé le client de branche de fonctionnalités à partir de C3, ajouté quelques fonctionnalités au client et soumis C8 et C9. Enfin, vous retournez à la branche serveur et validez à nouveau C10.

Comment utiliser git rebase pour fusionner des branches dans Git

Supposons que vous souhaitiez fusionner les modifications du client dans la branche principale et les publier, mais que vous ne souhaitiez pas fusionner les modifications du serveur pour le moment , car ils doivent encore être testés de manière plus approfondie. A ce moment, vous pouvez utiliser l'option --onto de la commande git rebase pour sélectionner les modifications qui sont dans la branche client mais pas dans la branche serveur (c'est-à-dire C8 et C9), et les rejouer sur la branche master :

$ git rebase --onto master server client

La commande ci-dessus signifie : "Supprimer la branche client, retrouver les modifications après l'ancêtre commun de la branche client et de la branche serveur, puis les rejouer sur la branche maître." C'est un peu compliqué à comprendre, mais l'effet est très cool.

Comment utiliser git rebase pour fusionner des branches dans Git

Vous pouvez désormais avancer rapidement dans la branche principale de fusion.

$ git checkout master
$ git merge client

Comment utiliser git rebase pour fusionner des branches dans Git

Ensuite, vous décidez d'intégrer les changements dans la branche serveur. Utilisez la commande git rebase [basebranch] [topicbranch] pour rebaser directement la branche de fonctionnalité (c'est-à-dire le serveur dans cet exemple) sur la branche cible (c'est-à-dire le maître). Cela vous évite les multiples étapes consistant à passer d'abord à la branche du serveur, puis à exécuter la commande rebase dessus.

interesting-rebase-4 (1).png

$ git rebase master server

Scénarios d'utilisation du rebase en développement

Le rebase peut être appliqué plus ou moins dans le workflow Git de votre équipe

Nettoyage local

Effectuez un rebase interactif de temps en temps, vous pouvez vous assurer que chaque commit dans votre branche de fonctionnalités est ciblé et significatif. Vous n'avez pas à vous soucier des commits orphelins lors de l'écriture du code - car vous pourrez certainement les corriger plus tard

La commande suivante rebase de manière interactive les 3 derniers commits :

git checkout feature
git rebase -i HEAD~3

En fait, vous non branches déplacées - vous venez de fusionner les 3 prochains commits

Le rebase interactif est un excellent moyen d'introduire git rebase dans votre flux de travail car il n'affecte que la branche locale. Les autres développeurs ne peuvent voir que les résultats de ce que vous avez fait, c'est-à-dire un historique de branche très soigné et facile à suivre.

Mais encore une fois, cela ne fonctionne que sur les branches privées. Si vous travaillez avec d'autres développeurs sur la même branche de fonctionnalités, la branche est publique et vous ne pouvez pas réécrire l'historique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn