Comment utiliser Git Merge

Dec 31, 2024
Programming

Git utilise des branches pour isoler les flux de développement, pour empêcher la branche de libération stable de devenir polluée. Apporter du travail dans une branche dans le courant principal signifie la fusion des branches. Voici comment vous le faites.

Qu'est-ce qu'une fusion dans Git?
Se préparer à fusionner une branche en git
Effectuer une fusion
Effectuer une fusion rapide dans Git
Comment résoudre les conflits de fusion à Git
Tout fusionne finalement

Qu'est-ce qu'une fusion dans Git?

Git a été conçu pour rendre la ramification simple et rapide. Contrairement à d'autres systèmes de contrôle de version, la ramification sur GIT est une question triviale. Sur les projets multi-développeurs en particulier, la branche est l'un des principaux outils organisationnels de Git.

Branches Sandbox Nouveaux efforts de développement afin que le code puisse être modifié ou ajouté sans affecter le code dans d'autres branches, en particulier la branche principale ou maître. Cela contient généralement la version stable de votre base de code.

L'isolement de ces modifications de votre version de code stable est parfaitement logique. Mais tôt ou tard, le nouveau code sera testé, examiné et affronté en caoutchouc pour être roulé dans la branche principale. À ce stade, vous devez fusionner votre branche dans la branche principale.

En fait, les branches peuvent avoir des sous-branches afin que vous puissiez fusionner votre branche dans une autre branche au lieu de la branche principale. N'oubliez pas que les fusions prennent toujours une branche et la fusionnent dans un cible branche, quelle que soit cette branche. Si vous souhaitez fusionner votre branche principale dans une autre branche, vous pouvez même le faire aussi.

Comme la plupart des actions dans GIT, vous effectuez des fusions dans votre référentiel local et les poussez vers votre référentiel distant.

Se préparer à fusionner une branche en git

Nous avons un petit projet de développement avec un référentiel GIT local et un référentiel GIT distant. Nous avons créé une branche appelée «bugfix14» à partir de la branche «maître» et travaillé sur une solution à un bug.

Ce travail est terminé et nous avons testé notre code. Tout fonctionne comme prévu. Nous voulons lancer ces modifications dans la branche principale afin que notre correctif fait partie de la prochaine version du logiciel.

Il y a un peu de préparation à faire avant d'effectuer la fusion. Nous devons nous assurer que la branche cible - dans ce cas, la branche «maître» - et la branche que nous allons fusionner sont toutes les deux à jour.

  • Sur Branch BugFix14 : Ceci est notre branche actuelle.
  • Votre branche est à jour avec «Origin / BugFix» : La branche de notre référentiel local a le même historique de validation que la branche du référentiel distant. Cela signifie qu'ils sont identiques.
  • rien à commettre Il n'y a aucun changement dans la zone de mise en scène qui n'a pas été commis.
  • Arbre de travail propre : Il n'y a pas de changements non stages dans le répertoire de travail.

Tous ceux-ci indiquent que la branche est à jour et nous sommes clairs pour continuer. Si l'un d'eux indiquait que des changements existaient, nous aurions besoin de les mettre en scène, de les commettre et de les pousser à la télécommande. Si quelqu'un d'autre avait travaillé sur ces fichiers, nous devrons peut-être retirer ses modifications du référentiel distant.

Vérifier la succursale que nous allons fusionner pour simplifier le processus de fusion. Il nous permet également de vérifier qu'il est à jour. Jetons un coup d'œil à la branche principale.

Nous obtenons les mêmes confirmations que la branche «maître» est à jour.

EN RAPPORT: Comment choisir le flux de travail GIT & amp; Modèle de branchement qui convient à votre équipe

Effectuer une fusion

La branche «BugFix14» a été ramifiée à partir de la branche «maître». Il y a eu un engagement dans la branche «Master» après la création de la branche «BugFix14». Il y a eu quelques engins dans la branche «BugFix14».

Nous nous sommes assurés que nos deux succursales sont à jour et nous avons vérifié la succursale «maître». Nous pouvons émettre la commande pour fusionner la branche «BugFix14» dans la branche «Master».

La fusion a lieu. La branche «BugFix14» existe toujours, mais maintenant les modifications qui ont été apportées dans cette branche ont été fusionnées dans la branche «maître».

Dans ce cas, la commande Merge effectue un fusion à trois . Il n'y a que deux succursales, mais il y a trois engins impliqués. Ils sont le chef de l'une ou l'autre branche, et un troisième engagement qui représente l'action de fusion elle-même.

Pour mettre à jour notre référentiel distant, nous pouvons utiliser le poussoir git commande.

Certaines personnes préfèrent supprimer les branches latérales une fois qu’elles les ont fusionnées. D'autres prennent soin de les préserver comme un enregistrement de la véritable histoire de développement du projet.

Si vous souhaitez supprimer la branche, vous pouvez le faire en utilisant le branche git commande avec le -d (supprimer) l'option.

Pour Supprimer la branche Dans le référentiel distant, utilisez cette commande:

Vous aurez une histoire de validation linéaire, mais ce ne sera pas la véritable histoire.

EN RAPPORT: Comment supprimer les branches GIT sur les référentiels locaux et distants

Effectuer une fusion rapide dans Git

Si vous n'avez fait aucun engagement dans la succursale «maître», votre histoire ressemblera à ceci. Il semblera également ceci si vous repousser Votre branche de développement afin qu'elle soit attachée à la fin de la branche «maître».

Parce qu'il n'y a pas de validation dans la branche «Master», pour fusionner la branche «BugFix15», tout ce que Git a à faire est de pointer le pointeur de tête «maître» vers le dernier engagement de la branche «BugFix15».

Git effectuera une fusion rapide Chaque fois qu'il peut . Si les engagements dans la branche «maître» signifient qu'une fusion rapide n'est pas possible, Git utilisera un fusion à trois .

Tu ne peux pas force Une fusion rapide - elle pourrait ne pas possible, après tout - mais vous pouvez déclarer que ce sera une fusion rapide ou rien. Il existe une option qui demande à Git d'utiliser une fusion rapide si elle le peut, mais pas pour faire une fusion à trois si elle ne le peut pas. L'option est --ff uniquement (fusion rapide uniquement).

Cela fusionne la branche «BugFix15» dans la branche «Master», mais seulement si une fusion rapide est possible.

Dans ce cas, il y a eu des engagements dans la branche «maître», donc une fusion rapide n'est pas possible.

Comment résoudre les conflits de fusion à Git

Si les mêmes parties du même fichier ont été modifiées dans les deux branches, les branches ne peuvent pas être fusionnées. L'interaction humaine est nécessaire pour résoudre les modifications contradictoires.

Ici, nous avons apporté des modifications à un fichier appelé "rot.c" dans une branche appelée "BugFix17" que nous voulons fusionner à la branche "Master". Mais «rot.c» a également été modifié dans la branche «maître».

Lorsque nous essayons de le fusionner, nous obtenons un avertissement qu'il y a des conflits. GIT répertorie les fichiers contradictoires et nous dit que la fusion a échoué. Nous pouvions reculer complètement en utilisant le --avorter option:

Mais la résolution des fusions n'est pas aussi effrayante que cela puisse paraître. Git a fait un peu de travail pour nous aider. Si nous modifions l'un des fichiers contradictoires - dans notre cas, nous n'en avons qu'un - nous trouverons les sections de code contradictoires mises en évidence pour nous.

Chaque conflit est délimité par sept personnages de moins que " & lt; & lt; & lt; & lt; & lt; & lt; & lt; "Et sept personnages plus grands que" & gt; & gt; & gt; & gt; & gt; & gt; & gt; ", Avec sept signes égaux" ======= " entre eux.

  • Le code au-dessus des signes égaux est de la branche que vous fusionnez dans .
  • Le code ci-dessous le signe égal est le code de la branche que vous essayez de fusionner .

Vous pouvez facilement rechercher l'un des ensembles de sept caractères et passer d'un conflit à un conflit via votre fichier. Pour chaque conflit, vous devez choisir quel ensemble de modifications que vous allez conserver. Vous devez modifier le code que vous rejetez et les lignes de sept caractères que Git a ajoutées.

Nous allons conserver le code de la branche «BugFix17». Après édition, notre fichier ressemble à ceci.

Nous pouvons maintenant continuer la fusion. Mais note, nous utilisons le commettre commander pour le faire, pas le fusionner commande.

Nous engageons le changement en mettant en scène le fichier et en le commetant comme d'habitude. Nous vérifierons le statut avant de nous engager final.

La fusion est terminée. Nous pouvons maintenant pousser cela à notre référentiel distant.

EN RAPPORT: Comment réparer, modifier ou annuler les engagements Git (changer l'historique Git)

Tout fusionne finalement

Toutes les branches doivent être fusionnées, finalement, afin que les changements ne soient pas orphelins et oubliés.

La fusion des succursales est facile, mais les conflits peuvent être compliqués dans les équipes plus occupées et plus grandes. La résolution des conflits peut nécessiter la contribution de chaque développeur juste pour expliquer ce que fait leur code et pourquoi ils ont apporté leurs modifications. Vous devez comprendre cela, avant de pouvoir prendre une décision éclairée sur les modifications à conserver.

  • Comment renommer une branche en git
  • Comment vérifier une branche git distante
  • Comment ranger les changements dans le git
  • Comment changer de branches dans github
  • Git Rebase: tout ce que vous devez savoir
  • Le OnePlus 11 est là, mais avec un début difficile
  • Microsoft Edge obtient un chat IA et un nouveau look sur Windows
  • Les meilleurs écouteurs pour les fans d'iPhone atteignent leur prix le plus bas

Programming - Most Popular Articles

Comment renommer une branche en git

Programming Dec 19, 2024

La ramification est un exercice trivial en Git. Malheureusement, les tâches triviales attirent rarement l'attention et les erreurs se produisent. Si vous avez mal nommé une succursale, elle d..


Catégories