Voir les différences de twigs avec Meld?

Je sais que je peux voir la différence entre HEAD et l’état actuel avec meld . . Mais comment puis-je voir les différences entre les twigs, par exemple master et devel avec meld?

En ce moment je fais les étapes suivantes:

  1. Renommez le dossier de la copie de travail
    Par exemple mv /projectA /projectA_master )
  2. Cloner le projet à nouveau
    git clone url
  3. Passer à la twig de développement
    cd projectA && git -b devel origin/devel
  4. Voir les différences avec Meld
    meld /projectA_Master projectA

N’y a-t-il pas un moyen plus facile d’obtenir le même résultat dans le meld? J’en ai seulement besoin pour revoir les changements et pas principalement pour les fusionner.

J’ai également trouvé ce problème gênant, j’ai donc créé git meld, qui permet de différencier plus facilement des commits arbitraires sur l’arborescence de travail ou la zone de transfert. Vous pouvez le trouver sur https://github.com/wmanley/git-meld . C’est un peu comme le script de Mark mais fonctionne pour comparer n’importe quel commit arbitraire ou zone de transit ou le répertoire de travail avec n’importe lequel des autres. Si l’une des choses que vous comparez est l’arbre de travail, alors vous devez également lire en écriture pour ne pas perdre vos modifications.

Court et doux:

 git config --global diff.tool meld 

Cela configure Git pour utiliser meld comme outil de diff. (Vous n’avez pas besoin de spécifier les arguments de la ligne de commande, le support de meld est intégré à Git.)

Ensuite, si vous voulez un diff graphique au lieu d’un diff textuel, vous invoquez simplement git difftool au lieu de git diff (ils prennent tous les deux les mêmes arguments). Dans ton cas:

 git difftool master..devel 

Mise à jour: Si vous ne voulez pas de diff à la fois, mais souhaitez utiliser la vue “sous-répertoire” de meld avec toutes les modifications entre les deux twigs, notez l’option -d ou --dir-diff pour git difftool . Par exemple, quand je suis sur la twig XYZ et que je veux voir ce qui est différent entre cette twig et ABC, je lance ceci:

 git difftool -d ABC 

À partir de git v1.7.11, vous pouvez utiliser git difftool --dir-diff pour effectuer un diff de répertoire. Ce qui fonctionne assez bien avec les scripts sans https://github.com/wmanley/git-meld .

Configurez git

 git config --global diff.tool meld 

Utilise le

 git difftool -d topic // -d is --dir-diff git difftool -d master..topic 

Pour macOS

 brew cask install meld git config --global difftool.meld.cmd 'open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"' git config --global difftool.meld.trustExitCode true 

Il est important de dire qu’en utilisant git difftool -d vous pouvez toujours éditer vos fichiers de travail dans Meld et les sauvegarder . Pour ce faire, vous devez comparer une twig à votre arbre de travail actuel, par exemple:

 git difftool -d branchname 

Meld montrera que les répertoires gauche et droit sont situés dans / tmp. Cependant, les fichiers dans le bon répertoire sont en fait des liens symboliques vers vos fichiers dans le répertoire de travail en cours (ne s’applique pas à Windows). Vous pouvez donc les éditer directement dans Meld et lorsque vous les enregistrez, vos modifications seront enregistrées dans votre répertoire de travail.

Une option encore plus intéressante est la comparaison du répertoire de travail actuel avec le cache. Vous pouvez le faire en tapant simplement:

 git difftool -d stash 

Ensuite, vous pouvez transférer des modifications de stash (fenêtre de gauche) à votre copie de travail actuelle (fenêtre de droite), sans utiliser git stash pop/apply et éviter une résolution de conflit gênante qui peut être induite par ces commandes.

Je pense que cela peut augmenter considérablement le stream de travail avec des caches. Vous pouvez transférer progressivement les modifications de la mémoire cache vers la copie de travail et les valider une par une, en introduisant d’autres modifications si vous le souhaitez.

Bien que les autres réponses semblent indiquer qu’il n’y a pas de moyen de le faire directement dans le repository git pour le moment, c’est facile (grâce à la réponse à une autre question :)) d’écrire un script qui extraira les arbres de deux commits dans les répertoires temporaires et les exécuter, en supprimant les deux répertoires lorsque meld se termine:

http://gist.github.com/498628

Bien sûr, vous perdrez tous les changements apportés via Meld, mais je pense que c’est très agréable pour un aperçu rapide des différences.

Je pense qu’un moyen facile de faire cela est d’utiliser git reset --soft :

Objectif: comparer les différences entre branch_a et branch_b avec meld

 git checkout branch_a git checkout -b do_diff git reset --soft branch_b meld . 

Dans git V1.7.9, vous pouvez comparer deux commits sans la ligne de commande:

Vous devez configurer dans les options d’édition de ‘git gui’, global: «Utiliser l’outil de fusion: meld».

Lancez gitk , sélectionnez un commit, cliquez avec le bouton droit sur un autre commit> ” diff this -> selected “. Sous “patch”, cliquez avec le bouton droit sur un fichier> ” diff externe “.

Meld démarrera et affichera le toujours sélectionné, d’abord commettre sur le côté droit.

Si vous avez un répertoire de travail propre et un index propre (ou ne vous en souciez pas), alors vous voulez:

 git diff master..devel | patch -p1 && meld . && git reset --hard