211 votes

git visual diff entre les branches

Cette réponse est idéale pour voir une différence visuelle entre deux fichiers qui sont enregistrés dans git : Comment visualiser la sortie de 'git diff' avec un programme de diff visuel ?

Cependant, j'aimerais voir une différence visuelle entre deux branches. Jusqu'à présent, mon meilleur choix 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 ?

0 votes

J'ai ajouté une réponse ci-dessous incluant un visuel qui n'était pas encore abordé ici : comment voir quels commits les branches contiennent (que ce soit en commun ou de manière unique). Il y a beaucoup de choses que vous pouvez faire avec les fonctionnalités de base de git. Il serait bon de préciser ce que vous souhaitez inclure dans votre diff visuel. La plupart des réponses se concentrent sur les différences ligne par ligne des commits, alors que votre exemple se concentre sur les noms des fichiers affectés dans un commit donné.

232voto

alex Points 186293

Utilice git diff avec un gamme .

git diff branch1..branch2

Cela permettra de comparer les extrémités de chaque branche.

Si vous voulez vraiment un logiciel GUI, vous pouvez essayer quelque chose comme SourceTree qui prend en charge Mac OS X et Windows.

30 votes

Ce n'est pas visuel, bichette. ;)

38 votes

Dans les systèmes Linux, je recommande d'installer Meld puis le définir comme la valeur par défaut difftool con git config --global diff.tool meld et enfin la lancer au lieu de la simple diff con git difftool branch1..branch2 . Le résultat est beaucoup plus agréable à regarder.

0 votes

@marines Je suis d'accord - très pratique mais ce n'est pas visuel. Voir ma réponse ci-dessous. meld .

110voto

Tormod Hystad Points 641

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

Ligne de commande Git pour fusionner sans commettre :

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

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

git merge --abort

(h/t à @jcugat's pour le commentaire)

12 votes

Ne sous-estimez pas la pertinence de cette approche si vous aimez utiliser votre IDE (ou tout autre outil de différenciation GUI pas toujours facile à intégrer à Git) ! Cette option est géniale pour moi, puisque j'utilise Intellij et que je préfère largement pouvoir parcourir les fichiers modifiés dans l'IDE, dans toute sa gloire syntaxique, d'erreur, de code mort, éditable en place. J'utilise cette approche pour toutes mes revues de code, et j'ai laissé loin derrière moi l'outil abyssal de comparaison des pull requests de GitHub. Je peux même faire des modifications au fur et à mesure, et quand j'ai terminé, il me suffit de créer une nouvelle branche avec "-code-review" ajouté et de commiter !

2 votes

Elle fonctionne tant qu'il n'y a pas de conflit de fusion et échoue lorsqu'il y en a un.

1 votes

J'aime beaucoup cette approche ! De plus, au moins pour moi dans git gui il montre les conflits comme non mis en scène, les non-conflits comme mis en scène, ce qui permet d'obtenir une bonne distinction même. Cela m'aide beaucoup plus que la réponse la mieux notée :D

61voto

Kamal Reddy Points 771

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

enter image description here

0 votes

Existe-t-il des configurations/options/réglages pour modifier cette comparaison ? (comme --ignore-space-at-eol pour git diff)

56voto

Martin Points 148

Vous pouvez aussi le faire facilement avec gitk.

> gitk branch1 branch2

Cliquez d'abord sur l'extrémité de la branche 1. Ensuite, cliquez avec le bouton droit de la souris sur l'extrémité de la branche 2 et sélectionnez Diffuser ceci->sélectionné.

7 votes

Utilisation de gitk branch1..branch2 ne montre que les commits entre les deux révisions.

0 votes

En utilisant gitk (sans branch1 branch2) si vous voulez voir toutes les modifications que vous avez faites dans votre branche.

25voto

Jordan Parker Points 413

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

Vous pouvez voir les changements échelonnés dans une configuration de comparaison côte à côte, et vous pouvez facilement comparer la branche locale avec la branche distante et n'importe quelle autre branche. Lorsque plusieurs fichiers sont sélectionnés, la différence s'affiche comme ci-dessous :

enter image description here

En supposant que vous ayez extrait une branche de fonctionnalité et que vous vouliez voir la différence par rapport à 'master', faites un clic droit sur la branche 'master' et sélectionnez "Diff against current".

Malheureusement, il ne semble pas qu'il sera disponible sur les distributions *nix. bientôt .

3 votes

C'est peut-être "gratuit", mais il faut certainement prendre le temps de lire les conditions d'utilisation de l'enregistrement : atlassian.com/legal/accord-client Jusqu'à présent, j'ai apprécié l'outil, mais cela risque de me rebuter.

0 votes

@akauppi Quelles sont les parties qui vous ont rebuté ? Je pensais que tous ces accords étaient à peu près les mêmes.

0 votes

C'était il y a plus d'un an. Oui, les accords peuvent être similaires, mais c'est le processus que SourceTree me poussait à suivre. C'était bizarre. C'est du passé, cependant. Je n'aurai pas les détails pour vous. Désolé

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