54 votes

Comment résoudre un conflit après un git pull?

Je dois résoudre certains conflits après un git pull .

 $ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.
 

J'ai donc un peu cherché dans Google et j'ai trouvé des gens qui utilisaient git mergetool . Mais voici ce que j'ai eu:

 $ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found
 

Cela veut-il dire que je dois installer quelque chose?

Que se passe-t-il si je veux simplement que la version de git pull écrase tout?

25voto

Novelocrat Points 12126

Vous n'avez pas besoin mergetool pour cela. Il peut être résolu assez facilement manuellement.

Votre conflit, c'est que votre local s'engage ajouté un fichier, vision_problem_8.h, qu'une distance s'engager également créé, par un changement de nom à partir d' vignette_generator_mashed.h. Si vous exécutez ls -l vision_problem_8.h* vous verrez probablement plusieurs versions de ce fichier que git a conservé pour vous. L'un d'entre eux sera la vôtre, une autre d'entre eux sera la version à distance. Vous pouvez utiliser un éditeur ou tout ce que vous aimez résoudre les conflits de contenu. Lorsque vous avez terminé, git add le fichier concerné et de s'engager à terminer la fusion.

Si vous voulez juste utiliser la télécommande s'engager à la version, alors vous pouvez simplement déplacer la copie que vous n'avez pas à écrire en place et git add il.


Concernant la fusion des outils, jetez un oeil à l' git help mergetool. Fondamentalement, il va essayer de l'exécution de chaque les possibilités jusqu'à ce qu'il en trouve un, ou d'utiliser celui que vous avez configuré de manière explicite.

7voto

mano2a0c40 Points 53

Je pense que vous avez juste oublié le commutateur "-t" sur votre ligne de commande. Essayer:

 git mergetool -t gvimdiff
 

Bien sûr, vous pouvez utiliser votre outil de fusion préféré à la place du mien gvimdiff, la fusion est excellente aussi ...

5voto

Bluejack Points 51

Si vous exécutez votre fusion depuis un sous-répertoire de votre projet, git exécutera la fusion pour tout votre projet. Cependant, mergetool peut uniquement voir (et fusionner) les fichiers situés dans ou sous le répertoire de travail. Par conséquent, si ce scénario se produit, assurez-vous que vous essayez d'exécuter votre résolution de conflit à partir du répertoire de niveau supérieur de votre projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X