web-dev-qa-db-fra.com

Quel est le meilleur outil de fusion visuelle pour Git?

Quel est le meilleur outil pour visualiser et éditer une fusion dans Git? J'aimerais obtenir une vue de fusion à 3 sens, avec "mine", "leur" et "ancêtre" dans des panneaux séparés et un quatrième panneau "de sortie".

En outre, des instructions pour invoquer ledit outil seraient formidables. (Je n'ai toujours pas trouvé comment démarrer kdiff3 de manière à ne pas me tromper.)

Mon système d'exploitation est Ubuntu.

554
andy

Meld est un outil de comparaison/fusion.

Voici comment l'installer sur:

319
user20805

Vous pouvez configurer votre propre outil de fusion à utiliser avec "git mergetool".

Exemple:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

Et pendant que vous y êtes, vous pouvez également le configurer comme votre difftool pour "git difftool":

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

Notez que sous Unix/Linux, vous ne voulez pas que le $BASE soit analysé comme une variable par votre Shell - il devrait en fait apparaître dans votre fichier ~/.gitconfig pour que cela fonctionne.

86
Evgeny

Au-delà de la comparaison 3 , mon préféré a une fonctionnalité fusion dans le Édition Pro . La bonne chose avec sa fusion est qu'il vous permet de voir les 4 vues: base, gauche, droite et résultat fusionné. C'est un peu moins visuel que P4V mais beaucoup plus que WinDiff. Il s'intègre à de nombreux contrôles de code source et fonctionne sous Windows/Linux. Il possède de nombreuses fonctionnalités telles que des règles avancées, des éditions, un alignement manuel ...

Le client visuel Perforce ( P4V ) est un outil gratuit qui fournit une des interfaces les plus explicites pour la fusion (voir quelques captures d'écran ). Fonctionne sur toutes les grandes plateformes. Ma principale déception avec cet outil est son genre d'interface "en lecture seule" . Vous ne pouvez pas éditer manuellement les fichiers et vous ne pouvez pas les aligner manuellement.

PS: P4Merge est inclus dans P4V. Perforce essaie de rendre un peu difficile d'obtenir leur outil sans leur client.

SourceGear Diff/Merge est peut-être mon deuxième choix d’outil gratuit. Vérifiez cette fusion capture d'écran et vous verrez qu'il possède au moins 3 vues.


Meld est un outil gratuit plus récent que je préférerais utiliser SourceGear Diff/Merge : Il fonctionne désormais également sur la plupart des plates-formes (Windows/Linux/Mac) avec le net avantage de prendre en charge de manière native un contrôle de source tel que Git . Ainsi, vous pouvez avoir une histoire beaucoup plus simple sur tous les fichiers. La vue de fusion (voir capture d'écran ) ne comporte que 3 volets, tout comme SourceGear Diff/Merge . Cela rend la fusion un peu plus difficile dans les cas complexes.

PS: Si un outil prend en charge un jour 5 vues fusionnées , ce serait vraiment génial, car si vous sélectionnez des commits dans Git, vous n'en avez vraiment pas. base mais deux. Deux bases, deux modifications et une fusion résultante.

62
Wernight

Mon outil de fusion visuelle préféré est SourceGear DiffMerge

  • Ce est gratuit.
  • Multiplate-forme (Windows, OS X et Linux).
  • Interface visuelle propre
  • Toutes les fonctionnalités diff que vous attendez (Diff, Merge, Diff Folder).
  • Interface de ligne de commande.
  • Raccourcis clavier utilisables.

User interface

42
Luke

J'entends de bonnes choses à propos de kdiff3.

38
Mike F

vimdiff

Une fois que vous avez appris vim (et à mon humble avis vous devriez), vimdiff n’est plus qu’un beau petit concept orthogonal à apprendre. Pour obtenir de l'aide en ligne dans vim:

:help vimdiff 

Cette question explique comment l’utiliser: Comment utiliser vimdiff pour résoudre un conflit?

enter image description here

Si vous êtes coincé dans l'ère sombre de l'utilisation de la souris et que les fichiers que vous fusionnez ne sont pas très volumineux, je vous recommande de les mélanger.

27
Andrew Wagner

Vous pouvez essayer P4Merge .

Visualisez les différences entre les versions de fichiers avec P4Merge. Résolvez les conflits résultant d'un développement parallèle ou simultané via un code de couleur.

Les fonctionnalités comprennent:

  • Souligner et éditer les différences de fichier texte
  • Choisissez d'inclure ou d'ignorer les fins de ligne ou les espaces
  • Reconnaître les conventions de fin de ligne pour Windows (CRLF), Mac (CR) et Unix (LF)
  • Utiliser des paramètres de ligne de commande et lancer à partir d'applications autres que Perforce
  • Afficher les numéros de ligne lors de la comparaison et de la fusion de fichiers
  • Exclure les fichiers modifiés, uniques ou inchangés
  • Filtrer les fichiers par nom ou par extension
  • Organiser les ressources modifiées dans une hiérarchie de fichiers/dossiers familière
  • Comparez les formats de fichier JPEG, GIF, TIFF, BMP et autres
  • Étendre à l'aide de l'API Qt
  • Superposer des images ou les afficher côte à côte
  • Souligner les différences sur les images superposées
22
Ron

IntelliJ IDEA possède un outil sophistiqué fusion des conflits avec la baguette magique Résoudre, ce qui simplifie grandement la fusion:

Source: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

16
niutech

Diffuse est mon préféré mais bien sûr je suis partial. :-) C'est très facile à utiliser:

$ diffuse "mine" "output" "theirs"

Diffuse est un outil de fusion de texte simple et petit, écrit en Python. Avec Diffuse, vous pouvez facilement fusionner, éditer et réviser les modifications apportées à votre code. Diffuse est un logiciel libre.

15
Derrick Moser

Araxis Merge http://www.araxis.com/merge Je l'utilise sous Mac OS X mais je l'ai utilisé sous Windows ... ce n'est pas gratuit ... mais il en a quelques-uns Fonctionnalités intéressantes ... plus agréable sous Windows.

12
Clintm

Vous pouvez changer l'outil utilisé par git mergetool en passant git mergetool -t=<tool> ou --tool=<tool>. Pour changer la valeur par défaut (depuis vimdiff), utilisez git config merge.tool <tool>.

7
user35149

Si vous cherchez simplement un outil de comparaison incomparable, c'est joli Nice: http://www.scootersoftware.com/moreinfo.php

7
Nathan Feger

Donc, pour la fusion de git, vous pouvez essayer:

  • DiffMerge pour comparer et fusionner visuellement des fichiers sous Windows, OS X et Linux.

    DiffMerge

  • Meld , est un outil de diff et de fusion visuel.

    Meld is a visual diff and merge tool

  • KDiff , un programme de diff et de fusion), qui compare ou fusionne 2 ou 3 fichiers/répertoires d'entrée de texte.
  • opendiff (élément de Xcode Tools sur macOS), utilitaire de ligne de commande qui lance l'application FileMerge à partir de Terminal pour comparer graphiquement des fichiers ou des répertoires, notamment fusion .
2
kenorb

J'ai essayé beaucoup des outils mentionnés ici et aucun d'entre eux n'a été ce que je recherche.

Personnellement, j’ai trouvé Atom un excellent outil pour visualiser les différences et pour la résolution/fusion des conflits.

En ce qui concerne la fusion, il n'y a pas trois vues, mais elles sont toutes combinées en une vue en surbrillance colorée pour chaque version. Vous pouvez modifier le code directement ou utiliser des boutons pour utiliser la version de cet extrait de code souhaitée.

Je ne l'utilise même plus comme éditeur ou IDE, juste pour travailler avec git. Interface utilisateur propre et très simple, en plus, elle est hautement personnalisable.

  • Vous pouvez le démarrer à partir de la ligne de commande et transmettre un seul fichier que vous souhaitez ouvrir, ou ajouter votre dossier de projet (git repo).

    • Je recommanderais également chef de projet comme un moyen très pratique de naviguer entre les projets sans remplir votre vue arborescente.
  • Le seul problème que j'ai eu est l'actualisation - lorsque vous travaillez avec de grands référentiels, atom peut être lent pour mettre à jour les modifications que vous apportez en dehors de celui-ci. Je le ferme toujours quand j'ai fini, puis rouvre quand je veux voir mes modifications/commit à nouveau. Vous pouvez également recharger la fenêtre avec Ctrl + Maj + F5, ce qui ne prend qu'une seconde.

Et c'est gratuit bien sûr.

2
Sean McCallum

Vous pouvez installer outil de diff/fusion ECMerge sur votre Linux, Mac ou Windows. Il est préconfiguré dans Git. Il suffit donc d'utiliser git mergetool pour faire le travail.

1
Armel

J'utilise différents outils pour fusionner et comparer:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

Le poing pourrait être appelé par:

git difftool [BRANCH] -- [FILE or DIR]

La seconde est appelée lorsque vous utilisez git mergetool.

1
ephemerr

Si vous utilisez visual studio, l'outil intégré de Team Explorer est un outil très agréable pour résoudre les conflits de fusion de git.

0
Charith