Quel est le meilleur outil de fusion visuelle pour Git? [fermé]

599

Quel est le meilleur outil pour afficher et modifier une fusion dans Git? Je voudrais obtenir une vue de fusion à 3 voies, avec "la mienne", "la leur" et "l'ancêtre" dans des panneaux séparés, et un quatrième panneau "sortie".

De plus, des instructions pour invoquer ledit outil seraient formidables. (Je n'ai toujours pas compris comment démarrer kdiff3 de telle manière qu'il ne me donne pas d'erreur.)

Mon système d'exploitation est Ubuntu.

Andy
la source
15
"Mais maintenant ce n'est pas autorisé" ouais, c'est pourquoi je déteste le stackoverflow de nos jours. C'est beaucoup trop sec et ennuyeux sans ces questions.
István Ujj-Mészáros
17
Existe-t-il un site stackexchange où ce type de question est autorisé? Sinon, il devrait y avoir ..
fzzylogic
16
On dirait qu'il est temps pour un nouveau débordement de pile où de telles questions sont autorisées. Il est clair que beaucoup ont déclaré que de telles questions étaient utiles à tant de personnes qu'il était tout simplement stupide de les fermer. Je pense que vous avez dépassé les bornes avec la bureaucratie. Que diriez-vous de faire un sondage sur cette question et de voir ce que veulent vos "clients"; P
Piotr Owsiak
9
Il y a softwarerecs.stackexchange.com
Philipp Wendler
6
Le problème: les softwarerecs sont inutiles car les experts sont ici, pas là.
reinierpost

Réponses:

337

Meld est un outil de diff / fusion gratuit, open-source et multiplateforme (UNIX / Linux, OSX, Windows).

Voici comment l'installer sur:

20805
la source
53
qui se soucie du système d'exploitation que l'auteur d'origine utilise ?, la question est suffisamment générale pour intéresser tous ceux qui le recherchent. Et la différence à 3 voies, c'est quand vous voyez réellement 4 volets avec test; fusion-base / local / distant / résultat
Evgeny
16
meldest fastidieux avec des différences complexes, pouvoir sélectionner des options comme chose b for all unresolved conflictsest bien mieux que d'avoir à cliquer manuellement sur la bonne flèche pour chaque morceau meld. De plus, la possibilité de fusionner dans un fichier de sortie spécifique plutôt que de modifier les fichiers d'entrée en place est inestimable pour se retirer des nerges défaillants.
Mark Booth
3
@naxa Meld dispose désormais d'un programme d'installation Windows: code.google.com/p/meld-installer
Roman
6
kdiff3 vous permet de voir 4 vues, la fusion ne permet que 3 vues. Meld n'est pas un véritable outil de fusion, c'est un outil de diff car il n'affiche pas la vue de la version de base.
Akira Yamamoto
4
Meld est horrible, surtout pour les fusions. Il n'a pas la possibilité de «transférer automatiquement les modifications non conflictuelles», ce qui rend chaque fusion horriblement douloureuse.
Cerin
91

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 outil de diff 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 $BASEsoit analysé en tant que variable par votre shell - il devrait en fait apparaître dans votre fichier ~ / .gitconfig pour que cela fonctionne.

Evgeny
la source
10
Notez que puisque p4merge est (maintenant) l'un des outils mergetools officiellement supportés, il ne devrait pas être nécessaire de nettoyer avec l' outil. Variable .cmd plus.
Matt Ball
2
Assurez-vous que vous utilisez le bon devis: stackoverflow.com/a/1217994/3543437
kayleeFrye_onDeck
64

Beyond Compare 3 , mon préféré, a unefonctionnalité de fusion dans l' édition Pro . La bonne chose avec sa fusion est qu'il vous permet de voir les 4 vues: résultat de base, gauche, droite et fusionné. C'est un peu moins visuel que P4V mais bien plus que WinDiff. Il s'intègre à de nombreux contrôles de source et fonctionne sous Windows / Linux. Il possède de nombreuses fonctionnalités comme les règles avancées, les éditions, l'alignement manuel ...

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

PS: P4Merge est inclus dans P4V. Perforce essaie de rendre un peu difficile l'obtention de son outil sans son client.

SourceGear Diff / Merge peut être mon deuxième choix d'outil gratuit. Vérifiez que la capture d' écran de fusionet vous verrez qu'il a au moins les 3 vues.


Meld est un outil gratuit plus récent que je préférerais à SourceGear Diff / Merge : maintenant, il fonctionne également sur la plupart des plates-formes (Windows / Linux / Mac) avec l'avantage distinct de prendre en charge nativement certains contrôles de source comme Git . Ainsi, vous pouvez avoir un historique différent sur tous les fichiers beaucoup plus simple. La vue de fusion (voir capture d'écran ) n'a 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 la fusion de 5 vues , ce serait vraiment génial, parce que si vous choisissez les commits dans Git, vous n'avez vraiment pas une base mais deux. Deux bases, deux modifications et une fusion résultante.

Wernight
la source
7
Perforce Merge est génial. Il a un outil de fusion à 4 volets, ce qui aide vraiment: le vôtre, le leur, la base commune, nouveau
Gal
4
P4 est également utilisé par Google .
Wernight
5
Vous pouvez installer uniquement P4Merge sans le reste de perforce.
Dirk Bester
6
La dernière version de p4merge n'a pas l'interface "en lecture seule". Vous pouvez modifier le fichier fusionné dans le volet inférieur.
Ian Ni-Lewis
1
C'est une très bonne réponse et discussion. Merci pour le partage!
Mark Good
45

J'entends de bonnes choses sur kdiff3.

kryger
la source
4
+1: kdiff3 est de loin supérieur à meld et est également supporté nativement par git.
Mark Booth
3
kdiff3a beaucoup plus de fonctionnalités mais melda une meilleure interface utilisateur. À mon avis, meldc'est mieux pour des fusions faciles où les fonctionnalités fournies par meldsont suffisantes. N'oubliez pas d'essayer diffuseaussi.
Mikko Rantalainen
kdiff3 vous permet de voir 4 vues, la fusion ne permet que 3 vues. Meld n'est pas un véritable outil de fusion, c'est un outil de diff car il n'affiche pas la vue de la version de base.
Akira Yamamoto
43

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

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

Interface utilisateur

Luc
la source
3
comment le configurez-vous pour qu'il fonctionne avec git?
Ryan Lundy
2
Merci de me l'avoir présenté !! : D Cet outil est propre et a pris moins de temps à installer et à travailler qu'avec le meld. Je passe une demi-heure à essayer d'installer meld. Mais celui-ci je l'ai fait en 5 min !!
om39a
2
Remarque: diffmerge ne semble pas avoir de fonction de fusion à 3 voies. Je l'abandonne après l'avoir essayé pendant quelques semaines pour cette raison
StormeHawke
C'est un bel outil et peut également comparer des dossiers. Le problème est un peu lent (MacBookPro 15 2014, MacOS Catalina)
emKaroly
33

vimdiff

Une fois que vous avez appris vim (et à mon humble avis vous devriez), vimdiff n'est plus qu'un petit concept orthogonal de plus à 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?

entrez la description de l'image ici

Si vous êtes coincé dans les âges sombres de l'utilisation de la souris et que les fichiers que vous fusionnez ne sont pas très volumineux, je recommande de les fusionner.

Andrew Wagner
la source
<3 vimdiff, je n'arrive pas à comprendre comment convaincre svn de me laisser l'utiliser comme outil de 'fusion'.
klokop du
gvimdiff fonctionne également bien à cet effet.
new123456
2
L'utilisation du plugin Fugitive le rend encore plus facile! vimcasts.org/episodes/…
Erik Westrup
Si seulement il y avait un moyen de voir clairement la différence entre local / base et base / distant.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
24

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 le codage couleur.

Les fonctionnalités comprennent:

  • Mettre en évidence et modifier les différences de fichier texte
  • Choisissez d'inclure ou d'ignorer les fins de ligne ou les espaces blancs
  • Reconnaître les conventions de fin de ligne pour Windows (CRLF), Mac (CR) et Unix (LF)
  • Utiliser les paramètres de ligne de commande et lancer à partir d'applications non Perforce
  • Afficher les numéros de ligne lors de la comparaison et de la fusion de fichiers
  • Exclure des fichiers modifiés, uniques ou inchangés
  • Filtrer les fichiers par nom ou extension
  • Organisez les actifs modifiés 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
  • Superposez des images ou affichez-les côte à côte
  • Mettre en évidence les différences sur les images superposées
Ron
la source
le meilleur que j'ai vu jusqu'à présent. résoudre facilement les conflits en sélectionnant le changement dans la liste de la vue à trois voies
chovy
Nouveau lien: perforce.com/downloads/helix#product-10
Brill Pappin
Corrige le lien perforce.com/downloads/helix#clients
Al-Mothafar
J'ai commencé à l'utiliser aujourd'hui et c'est assez intuitif.
Ressource
22

IntelliJ IDEA dispose d'un outil sophistiqué de résolution des conflits de fusion avec la baguette magique Resolve, qui simplifie considérablement la fusion:

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

niutech
la source
2
L'outil de fusion d'Idea est tout simplement génial. il est même disponible dans l'édition communautaire d'Idea, ce qui signifie que vous pouvez l'utiliser gratuitement comme outil de fusion avancé - c'est ce que je fais (dans la plupart des cas, j'utilise VSCode où je travaille et j'utilise Idea pour les cas de fusion difficiles). VSCode fait également du bon travail, et parfois même mieux que Idea. mais pour les cas difficiles, leur disposition en 3 panneaux est le meilleur outil que j'ai jamais vu
godblessstrawberry
Je déteste que la barre de défilement «fichier estival» ne soit PAS ensemble! La principale raison pour laquelle j'aime diffus!
Anthony
16

Diffuse est mon préféré mais bien sûr je suis partisan. :-) Il est très simple d'utilisation:

$ diffuse "mine" "output" "theirs"

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

kenorb
la source
2
J'aime vraiment la diffusion et je ne suis pas partiale.
jturcotte
2
@Derrick Moser: diffusec'est très joli. Je viens de l'essayer maintenant et ça a fait mieux que de différer kdiff3. Mais j'essaie de l'utiliser avec git mergetoolet il ouvre 4 fichiers côte à côte (local, résultat de la fusion, distant, base), et mon écran n'est pas assez large pour cela. J'ai dû faire beaucoup de défilement horizontal. kdiff3 n'affiche que 3 côte à côte et le résultat sur la moitié inférieure de la fenêtre.
yairchu
diffuse a quelques options de fusion supplémentaires par rapport à meld (permet de joindre les deux versions plutôt que d'en choisir une).
Audrius Meskauskas
diffus diffuse sur Windows, pour comparer 2 dossiers, avec CVS ​​repo, avec Git repo, fusionnant les conflits de fusion git. Les fichiers diff diffus s'ouvrent dans des onglets dans une seule fenêtre. Je suis passé à diffus (après avoir utilisé ediff d'emacs (trop de fonctionnalités, utile dans les années 90)> vimdiff (touches compliquées de plugins)> p4merge> araxis (propriété)> meld (trop lent), tkdiff (seulement cvs)> kdiff3 (bon , bon regex ignorer les fonctionnalités)> winmerge (bon)> diffus (rapide, portable, fonctionne comme prévu)) la première fois que j'ai essayé de diffuser.
mosh
Comment changer la langue de l'interface graphique dans Diffuse?
zach
9

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

user35149
la source
6

Donc, pour la fusion git, vous pouvez essayer:

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

    DiffMerge

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

    Meld est un outil de diff et de fusion visuel

  • KDiff3 , un programme de diff et de fusion), qui compare ou fusionne 2 ou 3 fichiers / répertoires de saisie de texte.
  • opendiff(partie des outils Xcode sur macOS), un utilitaire de ligne de commande qui lance l'application FileMerge à partir de Terminal pour comparer graphiquement des fichiers ou des répertoires, y compris la fusion .
kenorb
la source
2
git config --global merge.tool opendiffa fonctionné le mieux pour moi
James Matthew Mudgett
5

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

Personnellement, j'ai trouvé qu'Atom était un excellent outil pour visualiser les différences et la résolution / fusion de conflits.

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

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

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

    • Je recommanderais également le gestionnaire de projets comme un moyen très pratique de naviguer entre les projets sans remplir votre arborescence.
  • Le seul problème que j'ai eu est rafraîchissant - lorsque vous travaillez avec de grands référentiels, l'atome peut être lent à mettre à jour les modifications que vous effectuez en dehors de celui-ci. Je le ferme toujours lorsque j'ai terminé, puis je le rouvre lorsque je souhaite afficher à nouveau mes modifications / validation. Vous pouvez également recharger la fenêtre avec ctrl + shift + f5, ce qui ne prend qu'une seconde.

Et c'est gratuit bien sûr.

Sean McCallum
la source
3

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]

Le second est appelé lorsque vous utilisez git mergetool.

éphémère
la source
2

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

Armel
la source
2

Si vous utilisez Visual Studio , l'outil intégré de Team Explorer est un très bon outil pour résoudre les conflits de fusion Git.

Charith
la source
0

gitx http://gitx.frim.nl/

Quelques bogues lors de l'utilisation de grands ensembles de validations, mais parfait pour parcourir les modifications et choisir les différentes modifications à effectuer, puis valider.

Blake Lucchesi
la source