En cas de conflit de fusion dans Git, des fichiers indésirables tels que les suivants sont insérés dans les fichiers en conflit. Trois questions:
Remarque: Au cas où cela serait pertinent, j'utilise le client GUI Mac de GitHub.
Il y a maintenant une meilleure solution que d'essayer de lire les marqueurs de charabia que Git insère dans vos fichiers. Kaleidoscope 2 , la deuxième version de Black Pixel de leur outil de diff, est maintenant également un outil de fusion. Ce n'est pas gratuit, mais cela fonctionne à merveille.
Après avoir installé Kaleidoscope 2, il est très simple de l'intégrer à Git. Ouvrez Kaléidoscope et dans la barre de menu choisissez Kaléidoscope > Intégration…
Ensuite, vous verrez cette fenêtre. Choisissez simplement Git dans la navigation de gauche, puis installez l'outil de ligne de commande ksdiff
, puis créez l'outil de diff et de fusion par défaut de Kaleidoscope Git.
Enfin, une fois que vous avez un conflit de fusion dans Git, accédez simplement à la ligne de commande et exécutez git mergetool
. Maintenant, le conflit est facile à lire. Prendre plaisir.
Tout entre <<<<<<
et ======
provient de la révision HEAD
, qui est l'état validé avant de démarrer l'opération de fusion (git merge
se plaindra si l'arborescence est sale, elle devrait donc être équivalente à votre répertoire de travail).
Les parties entre ======
et >>>>>>
provient de la version fusionnée. Le texte après le >>>>>>
est le commentaire du commit qui a introduit le changement conflictuel.
La présence d'un marqueur de conflit signifie que la version de base de cette partie du fichier est différente des deux "nouvelles" versions. La version de base (dernier ancêtre commun) n'est pas affichée.
Si vous voulez une fusion plus confortable et une interface graphique disponible, je vous suggère de jeter un œil à kdiff3.
<<<< HEAD #Where the conflict starts
#Previous Revision
========== # The point where things look iffy
#Things that changed
>>>>> New Commit # Point where the conflict ends
Le Xcode de Mac est fourni avec FileMerge qui est accessible sur la ligne de commande avec opendiff
.
git mergetool -t opendiff
Vous pouvez configurer un outil de fusion (graphique) et utiliser cet outil pour résoudre les conflits.
Jetez également un œil à la git mergetool
commande - si l'un des outils prédéfinis est installé ou si vous avez configuré un autre outil, il ouvrira l'outil pour la résolution http://schacon.github.com/git/git-mergetool. html
Si vous êtes intéressé par les outils GUI, vous n'avez pas à vous soucier de la signification réelle des notations, car l'outil GUI vous aidera à prendre facilement les résolutions. Comprenez simplement que les pièces marquées par =====
et >>>>>
sont les sections de conflit.
Lorsque vous avez deux branches avec des modifications dans le même fichier et que vous essayez de les fusionner, un conflit de fusion se produit. Pour afficher la liste des fichiers en conflit, exécutez git status
sur votre terminal.
Les lignes en conflit des fichiers seront marquées par des indicateurs visuels: <<<<<
- Le conflit commence après cette ligne. =====
- Divise les modifications de HEAD et merging_branch. >>>>>
- Fin des lignes en conflit.
<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch
Lorsque vous corrigez vos fichiers en conflit et que vous êtes prêt à fusionner, il vous suffit d'exécuter git add
et git commit
pour générer le commit de fusion. Une fois la validation effectuée, git Push
les modifications apportées à la branche.
Article de référence: Git merge .