Maison >outils de développement >git >Comment fusionner le code d'une branche avec git
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.
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.
// 初始化仓库 git init // 创建a.txt touch a.txt // 创建b.txt touch b.txt // 加入暂存区 git add . // 提交 git commit -m 'initial'
git checkout -b feature
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.
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.
À ce stade, vous devez fusionner la branche de fonctionnalité avec la branche principale. Il existe deux options :
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.
git merge feature
命令后,存在冲突,进入 merging 工作区,然后一次性解决所有冲突后,提交一个新的 commit。
执行 gitk 命令行,可以在界面上看到当前分支如下图所示。有一个新的 commit。
这个命令从名字上就可以直观看出它的功能:改变当前的分支的基点
。对于 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.
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é.
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.
Exécutez la commande gitk sur la branche feature, visible dans l'interface :
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.
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.
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.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.
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!