Maison >outils de développement >git >Comment fusionner le code d'une branche avec git

Comment fusionner le code d'une branche avec git

青灯夜游
青灯夜游original
2023-01-04 11:24:4810365parcourir

Comment fusionner le code d'une branche avec git : 1. Utilisez la commande "git merge". Cette commande est utilisée pour fusionner des branches. Elle peut fusionner le contenu d'autres branches dans la branche actuelle. 2. Utilisez la commande "git rebase", qui est utilisée pour modifier le point de base de la branche actuelle afin de réaliser la fusion des branches.

Comment fusionner le code d'une branche avec git

L'environnement d'exploitation de ce tutoriel : système Windows 7, Git version 2.30.0, ordinateur Dell G3.

Dans les projets, nous créons toujours de nombreuses branches pour développer différentes fonctions ou exigences, puis les fusionnons dans la branche principale une fois les fonctions terminées. Alors, comment fusionner des branches avec élégance ? Si vous êtes intéressé à ce stade, autant continuer à lire.

Établir un scénario de développement multi-joueurs

1 Créer un entrepôt

// 初始化仓库
git init
// 创建a.txt
touch a.txt
// 创建b.txt
touch b.txt
// 加入暂存区
git add .
// 提交
git  commit -m 'initial'

git checkout -b feature
Comment fusionner le code dune branche avec git

2.

Comment fusionner le code dune branche avec git

3. Développer deux branches simultanément

développement de la branche des fonctionnalités Les nouvelles fonctionnalités de la prochaine version ont été soumises deux fois, et les fichiers a.txt et b.txt ont été modifiés respectivement.


La branche master a développé la fonction de cette version Elle a également été soumise deux fois et le fichier a.txt et le fichier b.txt ont été modifiés. Comment fusionner le code dune branche avec git


La situation actuelle de la branche est la suivante. Les caractères sur chaque nœud sont les valeurs de hachage de chaque commit. L'en-tête de la branche principale actuelle est sur le nœud c5 et l'en-tête de la branche de fonctionnalité. est sur le nœud c3. Comment fusionner le code dune branche avec git


À ce stade, vous devez fusionner la branche de fonctionnalité avec la branche principale. Il existe deux options : Comment fusionner le code dune branche avec git

fusionner directement la branche de fonctionnalité sur la branche principale
  • d'abord rebase (rebase) sur ; la branche de fonctionnalité, puis fusionner la branche de fonctionnalité sur la branche principale.
  • Ce qui suit expliquera respectivement ces deux solutions :

Commande de fusion 1 : git mergegit merge est utilisé pour fusionner des branches et fusionner le contenu d'autres branches dans la branche actuelle.

L'opération de fusion git est relativement violente et constitue également une méthode couramment utilisée. La démonstration suivante consiste à fusionner la branche de fonctionnalité dans la branche principale. Le processus spécifique est le suivant :

Trouver le nœud de validation de l'ancêtre commun le plus récent. c1 de la branche feature et de la branche master ;
  • Fusionnez le dernier nœud de commit c3 sur la branche feature avec le dernier nœud de commit c5 sur la branche master ; S'il y a un conflit à ce moment, résolvez tous les conflits en même temps, puis générer un nouveau nœud de commit c6 ;
  • En même temps, selon l'ordre du temps de commit sur les deux branches, elles sont placées tour à tour sur la branche master. Vous pouvez utiliser git log pour voir l'ordre du temps. .
  • Le diagramme de résultats du processus ci-dessus est le suivant :

Les commandes d'opération dans le projet sont les suivantes. Vous pouvez voir qu'après avoir exécuté la commande git merge feature, il y a des conflits. Entrez dans l'espace de travail de fusion, résolvez tous les conflits en même temps et soumettez une nouvelle validation. Comment fusionner le code dune branche avec git

Comment fusionner le code dune branche avec git

git merge feature 命令后,存在冲突,进入 merging 工作区,然后一次性解决所有冲突后,提交一个新的 commit。

Comment fusionner le code dune branche avec git

执行 gitk 命令行,可以在界面上看到当前分支如下图所示。有一个新的 commit。
Comment fusionner le code dune branche avec git

合并命令2:git rebase

这个命令从名字上就可以直观看出它的功能:改变当前的分支的基点。对于 feature 分支,它是从 master 分支的 c1 节点创建的分支,所以它的基点Exécuter Ligne de commande gitk, vous pouvez voir la branche actuelle sur l'interface comme indiqué ci-dessous. Il y a un nouveau commit.

Insérer la description de l'image ici🎜🎜🎜🎜🎜🎜🎜Commande de fusion 2 : git rebase🎜🎜Cette commande peut voir intuitivement sa fonction à partir du nom : changer le point de base de la branche actuelle. Pour la branche feature, il s'agit d'une branche créée à partir du nœud c1 de la branche master, donc son point de base est c1. Si vous exécutez git rebase master sur la branche feature, le processus est à peu près le suivant : 🎜
  • Trouvez le dernier nœud de validation c5 de la branche principale actuelle et remplacez le point de base de la branche de fonctionnalité par le nœud c5. ;

  • S'il y a un conflit entre la branche de fonctionnalité et la branche principale, le conflit sera résolu séquentiellement en fonction de l'heure de soumission de la branche de fonctionnalité, et la valeur de hachage du commit de la branche de fonctionnalité sera modifiée.

  • Enfin, vu sur la branche, une ligne droite apparaît, mais il y a un problème d'écrasement des commits historiques.

Le résultat du processus ci-dessus est présenté ci-dessous, où c2' et c3' indiquent que la valeur de hachage a changé.

Comment fusionner le code dune branche avec git

Il convient de noter :

  • Lorsque vous effectuez une opération de rebase, vous devez vous assurer que la branche principale est dans le dernier état, sinon il peut y avoir des conflits lors de la fusion de fusion, et la signification de l'utilisation de rebase sera perdu.

  • Ne rebasez jamais le contenu qui a été poussé vers la télécommande. Si quelqu'un extrait le code de la télécommande, puis le modifie et le soumet, la branche deviendra extrêmement gênante.

Après avoir compris le processus de base, nous pouvons utiliser la commande rebase pour commencer à fusionner des branches :

  • Exécutez git rebase master dans le projet, comme indiqué ci-dessous. Étant donné qu'il existe des conflits dans les deux soumissions, ces conflits doivent être résolus séquentiellement dans l'espace de travail de rebase.

Comment fusionner le code dune branche avec git

Exécutez la commande gitk sur la branche feature, visible dans l'interface :
Comment fusionner le code dune branche avec git

  • Une fois la branche feature rebasée, revenez à la branche master et exécutez la fonctionnalité git merge pour terminer l’opération de fusion.

Comment fusionner le code dune branche avec git

Exécutez gitk sur la branche principale, et sa structure de branche est la suivante. Vous pouvez voir que les branches présentent une ligne très rafraîchissante.

Comment fusionner le code dune branche avec git

Instructions : git stash

Parfois, le code sur la branche n'a pas encore été développé et vous devez fusionner les branches. À ce stade, il vous suffit de :

1. stockez le contenu de l'espace de travail, puis sélectionnez Les deux méthodes de fusion de branches ci-dessus effectuent la fusion de branches.

Comment fusionner le code dune branche avec git

2. Après avoir terminé la fusion des branches, revenez à la branche de développement, exécutez git stash pop pour afficher le contenu de l'espace de travail, puis vous pourrez continuer à écrire du code avec plaisir.

Comment fusionner le code dune branche avec git

Résumé

La fusion Git est relativement grossière et est la méthode que la plupart des gens choisissent. Cette méthode peut garantir que chaque commit est organisé par ordre chronologique, mais le diagramme de branche sera très compliqué et il sera introduit. une fois, ce qui n'a aucun sens.

Git rebase est une ligne dans l'enregistrement de validation historique, ce qui est très élégant, mais il existe un risque de modification de la validation historique, et la chronologie de la validation est perturbée lors de la visualisation du journal avec git log. Dans le même temps, rappelez-vous Ne rebasez pas le contenu qui a été poussé vers la télécommande , sinon la branche deviendra compliquée.

Personnellement, j'ai tendance à utiliser la méthode du rebase. Après tout, le coût cognitif du commit est là, et cela semble confortable. Mais s'il y a beaucoup de développeurs, il vaut mieux fusionner. Après tout, résoudre les conflits un par un ennuyera tout le monde, hahaha

Dans le projet, nous créerons toujours de nombreuses branches pour développer différentes. fonctions ou exigences, etc. Une fois la fonction terminée, fusionnez-la avec la branche principale. Alors, comment fusionner des branches avec élégance ? Si vous êtes intéressé à ce stade, autant continuer à lire.

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