Maison >interface Web >tutoriel CSS >Fusion des conflits: ce qu'ils sont et comment les gérer
Cet article poursuit notre série "Advanced Git". Suivez la tour sur Twitter ou abonnez-vous à leur newsletter pour des mises à jour sur les futurs articles.
Merger les conflits: une frustration commune pour les utilisateurs de GIT, en particulier ceux qui collaborent. Cependant, ils sont souvent moins intimidants qu'ils semblent. Cet versement explique leurs causes, leur nature et leur résolution.
Les conflits de fusion surviennent lors de l'intégration des changements de différentes sources dans votre branche actuelle. Cela ne se limite pas à la fusion de branches; Rebasing, la cueillette des cerises, git pull
ou même la réapplication de la cachette peuvent tous déclencher des conflits. Bien que toutes les intégations ne mènent pas à un conflit, des conflits se produisent lorsque des changements contradictoires existent.
Les prouesses fusionnées de Git sont une force clé. Il gère automatiquement la plupart des intégrations. Cependant, lorsque les modifications sont confrontées à un conflit, par exemple, la même ligne de code modifiée différemment dans deux commits ou un fichier modifié dans une branche et supprimée dans un autre - GIT nécessite une intervention humaine pour résoudre l'ambiguïté.
Git signale clairement la fusion des conflits. Une fusion ou une rebase échouée sera immédiatement signalée dans le terminal:
<code>$ git merge develop CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.</code>
Même si vous manquez ce message, git status
mettra en évidence le conflit. Git GUIS Comme Tower fournit des indices visuels pour vous assurer de ne pas négliger les conflits. Rassurez-vous, Git rend difficile de manquer un conflit de fusion.
Ignorer un conflit de fusion n'est pas une option; il doit être abordé. Vous avez deux choix: résoudre le conflit ou annuler l'action qui l'a causée.
La perte est souvent simple en utilisant le paramètre --abort
(par exemple, git merge --abort
, git rebase --abort
). Cela inverse la fusion / rebase, restaurant l'état pré-conflit. Cela fonctionne même si vous avez commencé à résoudre des fichiers; Vous pouvez toujours interrompre et redémarrer.
Examinons un fichier index.html
en conflit:
Git marque des sections contradictoires avec . Le contenu après ce marqueur est de votre branche actuelle (tête). <code>=======
sépare les changements contradictoires, suivis des changements de l'autre branche (par exemple, develop
), marqué par .
Votre tâche consiste à modifier le fichier, à l'aide d'un éditeur de texte, d'une IDE, d'une GIT GUI ou d'un outil de fusion, pour résoudre le conflit.
La méthode de résolution - éditeur de texte, IDE, GUI ou outil de fusion - n'a pas d'importance; Le fichier final doit refléter l'état souhaité. Des conflits simples pourraient impliquer de rejeter un changement. Des conflits plus complexes peuvent nécessiter une collaboration pour décider quel changement de conserver ou comment les combiner.
Bien que l'édition manuelle soit possible, les outils dédiés rationalisent souvent le processus. Git GUIS offre des aides à la résolution des conflits visuels. Les outils de fusion fournissent des fonctionnalités de visualisation et de comparaison de DiFF avancées (côte à côte, vues combinées, etc.). Configurez votre outil préféré à l'aide git config
et invoquez-le avec git mergetool
.
Après avoir résolu le conflit et mis en scène les modifications ( git add<filename></filename>
), commettez les changements comme d'habitude.
Les conflits de fusion sont gérables. Comprendre la cause vous permet de défaire ou de résoudre le conflit. Même les erreurs sont réversibles; Revenez simplement à l'engagement pré-conflit et recommencez.
Pour une plongée plus profonde dans le GIT avancé, explorez le "Kit Git avancé" gratuit avec des vidéos sur la branche, la rébase interactive, le réflog, les sous-modules, etc.
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!