web-dev-qa-db-fra.com

git visuel diff entre les branches

Cette réponse est idéale pour voir un diff visuel entre deux fichiers qui sont archivés dans git: Comment puis-je afficher la sortie 'git diff' avec un programme de diff visuel?

Cependant, j'aimerais voir un diff visuel entre deux branches. Jusqu'ici, mon meilleur pari semble être: 

git diff --name-status master dev

ce qui n'est pas très informatif et pas très visuel.

Y a-t-il quelque chose de mieux là-bas?

177
Snowcrash

Utilisez git diff avec un range .

git diff branch1..branch2

Cela permettra de comparer les conseils de chaque branche.

Si vous voulez vraiment un logiciel d'interface graphique, vous pouvez essayer quelque chose comme SourceTree qui supporte Mac OS X et Windows.

214
alex

Pour voir les différences visuelles de toutes les différences entre deux branches, j'aime bien fusionner les deux branches - SANS valider la fusion - puis utiliser git gui ou git Extensions pour obtenir un aperçu des différences.

Ligne de commande Git pour la fusion sans validation:

 git checkout branchA 
 git fusion --no-commit --no-ff branchB 

Ensuite, lorsque vous avez terminé, vous pouvez annuler la fusion avec

 git merge - support 

(h/t à @ jcugat pour le commentaire)

81
Tormod Hystad

Si vous utilisez Intellij Idea IDE, vous pouvez simplement utiliser l'option de comparaison de la branche.

enter image description here

50
Kamal Reddy

Vous pouvez aussi le faire facilement avec gitk.

> gitk branch1 branch2

Cliquez d'abord sur la pointe de branch1. Maintenant, faites un clic droit sur la pointe de branch2 et sélectionnez Diff this-> selected.

43
Martin

Pour ceux qui utilisent Windows avec TortoiseGit, vous pouvez obtenir une comparaison visuelle à travers cette fonctionnalité plutôt obscure:

  1. Accédez au dossier que vous souhaitez comparer
  2. Maintenez shift et faites un clic droit dessus
  3. Allez à TortoiseGit -> Parcourir la référence
  4. Utilisez ctrl pour sélectionner deux branches à comparer
  5. Faites un clic droit sur votre sélection et cliquez sur "Comparer les références sélectionnées"

Source: http://wikgren.fi/compare-diff-branches-in-tortoise-git-or-how-to-preview-changes-before-doing-a-merge/

27
Oversearch

Si vous utilisez OSX ou Windows 7+, Atlassian SourceTree fonctionne très bien pour cela. Ce est gratuit. 

Vous pouvez voir les modifications par étapes dans une configuration de diff côte à côte et vous pouvez facilement comparer local à distant et à deux autres branches. Lorsque plusieurs fichiers sont sélectionnés, le diff apparaît comme ci-dessous:

enter image description here

En supposant que vous ayez extrait une branche de fonctionnalité et que vous souhaitiez voir la différence par rapport à 'maître', cliquez avec le bouton droit de la souris sur la branche 'maître' et sélectionnez "Diff par rapport à courant".

Malheureusement, il ne semble pas qu'il soit disponible sur les distributions * nix de si tôt

19
Jordan Parker

Essayez "difftool" (en supposant que vous avez configuré les outils diff) - voir https://www.kernel.org/pub/software/scm/git/docs/git-difftool.html

Je trouve que name status convient au résumé, mais difftool itérera les modifications (et l'option -d vous donne la vue du répertoire), par exemple.

$ git difftool their-branch my-branch

Viewing: 'file1.txt'
Launch 'bc3' [Y/n]:
...

Ou comme @ rsilva4 mentionné avec -d et par défaut pour votre branche actuelle, il s’agit simplement - par exemple. comparer au maître:

$  git difftool -d master..

... et oui - il existe de nombreuses variantes - https://www.kernel.org/pub/software/scm/git/docs/git-reset.html

13
Paul Kohler

Si vous utilisez github, vous pouvez utiliser le site Web pour cela:

github.com/url/to/your/repo/compare/SHA_of_tip_of_one_branch ...

Cela vous montrera une comparaison des deux.

8
Arron

Dans GitExtensions vous pouvez sélectionner les deux branches dans la grille de révision avec Ctrl pressé. Ensuite, vous pouvez voir les fichiers qui diffèrent entre ces branches. Lorsque vous sélectionnez un fichier, vous verrez des différences pour celui-ci.

Tiré de ici

8
Mahmoodvcs

METTRE À JOUR

J'utilise maintenant SourceTree. Complètement recommandé. J'aime particulièrement la façon dont vous pouvez mettre en scène/décontenancer des mecs.


Cela fait le travail: 

git-diffall avec un outil de différenciation graphique comme meld. Voir le point 5 ici:

http://rubyglazed.com/post/15772234418/git-ify-your-command-line

Il y a un article de Nice sur git et se fondent ici: http://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy

7
Snowcrash

Vous pouvez également utiliser le logiciel gratuit P4Merge de Perforce:

http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools

 enter image description here

Vous trouverez des détails sur son intégration à Git ici et ici

mais un résumé rapide des liens ci-dessus est:

  • Mettez les bits suivants dans votre ~/.gitconfig, puis vous pourrez faire $ git mergetool et $ git difftool pour utiliser p4merge
  • Notez que $ git diff utilisera toujours le visualiseur de différences en ligne par défaut :) (testé avec git version 1.8.2)

Changements pour .gitconfig

[merge]
  keepBackup = false
    tool = p4merge
[mergetool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$REMOTE\"" "\"$PWD/$LOCAL\"" "\"$PWD/$MERGED\""
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    tool = p4merge
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$REMOTE\"" "\"$LOCAL\""
4
Brad Parks

Si vous utilisez Eclipse, vous pouvez comparer visuellement votre branche actuelle de l'espace de travail à une autre balise/branche:

Eclipse workspace compare

4
Alessandro Dionisi

Si vous utilisez l'excellent éditeur WebStorm, vous pouvez comparer avec n'importe quelle branche de votre choix:  Webstorm git compare

2
Nico

Vous pouvez faire beaucoup avec les fonctionnalités de base de Git. Il peut être intéressant de spécifier ce que vous souhaitez inclure dans votre diff visuel. La plupart des réponses se concentrent sur les différences de validations ligne par ligne, votre exemple se concentrant sur les noms des fichiers affectés dans une validation donnée.

Un aspect visuel qui semble ne pas être abordé est la manière de voir les commits que contiennent les branches (qu'elles soient communes ou uniques).

Pour ce visuel, je suis un grand fan de git show-branch; il ouvre une table de commits bien organisée par branche et retourne à l'ancêtre commun .- pour l'essayer sur un référentiel avec plusieurs branches avec divergences, il suffit de taper git show-branch et de vérifier le résultat. voir Comparez les commits entre les branches Git

0
Kay V

Voici comment visualiser le diff visuel entre les commits entiers, par opposition aux fichiers uniques, dans Visual Studio (testé dans VS 2017). Malheureusement, cela ne fonctionne que pour les commits dans une branche: dans "Team Explorer", choisissez la vue "Branches", cliquez avec le bouton droit de la souris sur le référentiel, puis choisissez "Afficher l'historique" comme dans l'image suivante. 

 enter image description here

Ensuite, l'historique de la branche actuelle apparaît dans la zone principale. (Où les branches qui se sont terminées de la même manière que les validations précédentes sont marquées par des étiquettes). Sélectionnez maintenant deux validations avec Ctrl-Gauche, puis cliquez avec le bouton droit de la souris et sélectionnez "Comparer les validations ..." dans le menu contextuel. 

Pour plus d'informations sur la comparaison de branches dans le monde Microsoft, consultez cette question de stackoverflow: Différences entre les branches git à l'aide de Visual Studio .

0