Question

Je dois résoudre un conflit 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 disaient utiliser git mergetool . Mais voici ce que j'ai obtenu:

$ 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 signifie-t-il que je dois installer quelque chose?

Et si je veux simplement que la version de git pull écrase tout?

Était-ce utile?

La solution

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

Votre conflit est que vos commits locaux ont ajouté un fichier, vision_problem_8.h , qu'un commit à distance a également créé, en renommant 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 préservé pour vous. L'un d'eux sera le vôtre, un autre sera la version distante. Vous pouvez utiliser un éditeur ou tout autre outil de votre choix pour résoudre le contenu conflictuel. Lorsque vous avez terminé, git ajoutez les fichiers concernés et validez la fusion.

Si vous souhaitez simplement utiliser la version de validation à distance, vous pouvez simplement déplacer la copie que vous n'avez pas écrite à la place et git l'ajouter .

En ce qui concerne les outils de fusion, consultez git help mergetool . En gros, il va essayer d’exécuter chacune des possibilités incluses jusqu’à en trouver une, ou d’en utiliser une que vous avez explicitement configurée.

Autres conseils

Je pense que vous venez d'oublier " -t " Basculez sur votre ligne de commande. Selon la page d’aide de git, il signifie "-t, --tool = " il fait donc ce que vous aviez l'intention de faire.

Essayez:

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 ...

Si vous exécutez votre fusion à partir d'un sous-répertoire de votre projet, git exécutera la fusion pour l'ensemble de 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.

Et si je veux simplement que la version de git pull écrase tout? Si vous voulez juste que vous devriez utiliser:

 git fetch
 git reset --hard origin/your-branch-name
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top