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:
mv /projectA /projectA_master
) git clone url
cd projectA && git -b devel origin/devel
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:
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