118 votes

Comment résoudre interactivement (visuellement) les conflits dans SourceTree / git

J'utilise SourceTree (Windows) pour mon projet git. Je peux le faire dans l'invite de commande ou dans le terminal Linux.

Mais je me demande s'il existe un moyen agréable de résoudre les conflits de manière interactive et visuelle. Par exemple, si pull détecte des conflits, faire apparaître un outil de conflit basé sur l'interface graphique (par exemple, P4Merge). Est-ce possible ?

Je suis toujours en train de résoudre manuellement les conflits, ce qui est tout simplement pénible.

Il s'agit, par exemple, d'un git pull message, de SourceTree.

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.

133voto

gtrig Points 3127

À partir de SourceTree, cliquez sur Outils->Options. Ensuite, dans l'onglet "Général", assurez-vous de cocher la case permettant à SourceTree de modifier vos fichiers de configuration Git.

Passez ensuite à l'onglet "Diff". Dans la partie inférieure, utilisez le menu déroulant pour sélectionner le programme externe que vous voulez utiliser pour faire les différences et les fusions. J'ai installé KDiff3 et je l'aime assez bien. Lorsque vous avez terminé, cliquez sur OK.

Maintenant, quand il y a une fusion, vous pouvez aller sous Actions->Résoudre les conflits->Lancer l'outil de fusion externe.

10voto

trejder Points 2221

J'utilise SourceTree avec TortoiseMerge/Diff, qui est un outil de diff/merge très facile et convaincant.

Si vous voulez l'utiliser aussi, alors.. :

  1. Obtenez la version autonome de TortoiseMerge/Diff (assez vieille, puisqu'elle n'est plus livrée en autonome depuis la version 1.6.7 de TortosieSVN, c'est-à-dire depuis juillet 2011). Liens et détails dans cette réponse .

  2. Dézipper TortoiseIDiff.exe y TortoiseMerge.exe à n'importe quel dossier ( c:\Program Files (x86)\Atlassian\SourceTree\extras\ dans mon cas).

  3. Dans SourceTree, ouvrez Tools > Options > Diff > External Diff / Merge . Sélectionnez TortoiseMerge dans les deux listes déroulantes.

  4. Hit OK et pointez SourceTree vers votre emplacement de TortoiseIDiff.exe y TortoiseMerge.exe .

Après cela, vous pouvez sélectionner Resolve Conflicts > Launch External Merge Tool à partir du menu contextuel sur chaque fichier en conflit dans votre référentiel local. Cela ouvrira TortoiseMerge, où vous pouvez facilement traiter tous les conflits que vous avez. Une fois terminé, fermez simplement TortoiseMerge (vous n'avez même pas besoin de sauvegarder les changements, cela sera probablement fait automatiquement) et après quelques secondes SourceTree devrait gérer cela gracieusement.

Le seul problème est qu'il crée automatiquement une copie de sauvegarde, même si l'option appropriée n'est pas cochée .

5voto

ozkary Points 2020

Lorsque le menu Résoudre les conflits->Contenu est désactivé, l'un d'entre eux peut se trouver dans la liste des fichiers en attente. Nous devons sélectionner l'option Fichiers en conflit dans le menu déroulant (en haut).

J'espère que cela vous aidera

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