Le segment de texte local que seul est affiché des marqueurs extérieurs dans le fichier de conflit
-
12-12-2019 - |
Question
Dans un fichier de résolution de conflit généré par GIT, seul le code commun doit être affiché en dehors des marqueurs ('<<<<<<< Notre' - '>>>>>>> LEURS') - Correct ?! /p>
J'ai un fichier CSS avec des commentaires que j'ai insérés dans la version locale et un conflit survenu, et ce segment de commentaire est répertorié en dehors des marqueurs.
Cela se produit à la fois dans un style normal et dans un style diff3 (segments de base inclus).
Lors de l'utilisation d'un outil visuel (P4Merge dans mon boîtier), ledit segment de texte est indiqué uniquement en local, mais pas à la base ou à la télécommande.
Aussi vérifié:
git checkout --theirs <file-name>
--> said segment not there
git checkout --ours <file-name>
--> said segment there
git checkout -m <file-name>
--> said segment outside markers
Alors qu'est-ce qui se passe ?!
La solution
Comment "Fermer" est le changement "local-seul" de la partie du fichier qui a un conflit?
Il est possible qu'il n'y ait pas eu de conflit textuel près de la partie du fichier où votre changement "local seulement" était, et cette partie du fichier a été fusionnée automatiquement.
Par exemple, disons que vous commencez à démarrer sur la branche A avec un fichier nommé README qui ressemble à ceci:
README
foo
bar
Puis vous fourchez une nouvelle branche B. sur la branche B, vous modifiez README pour ressembler à
README
foo
baz
et commettez-le.Maintenant, vous revenez à la branche A et vous apportez deux changements et vous engagez, alors la branche A ressemble à:
README
frotz
foo
qux
Maintenant, vous fusionnez B dans A. C'est ce que vous obtenez (à l'aide du style de conflit diff3):
README
frotz
foo
<<<<<<< HEAD
qux
||||||| merged common ancestors
bar
=======
baz
>>>>>>> B
Comme vous pouvez le constater, GIT a fusionné la première partie du fichier, mais puntée sur la deuxième partie.