git difftool pour donner répertoire de comparer? [dupliquer]

cette question a déjà une réponse ici:

est-il possible d'obtenir la commande git difftool pour ouvrir un répertoire comparer entre les fichiers modifiés et les fichiers contrôlés?

donc idéalement, si 2 fichiers ont changé, ils seraient les seuls 2 affichés, mais dans un répertoire comparer.

j'ai lu des messages sur Git Git pour donner tous les diffs de fichier en parallèle, donc des outils comme BeyondCompare a tout les diffs dans les onglets , mais je ne suis pas heureux avec cela!

On pouvait tirer une copie des fichiers modifiés à partir de mise en scène/fichiers archivés dans un dossier temporaire, puis ouvrir. Est-ce la seule option?

27
demandé sur Community 2010-01-22 02:45:19

2 réponses

mise à jour juin 2012 (2 ans et demi plus tard):

cela (comparer des annuaires au lieu de file-by-file) semble être bientôt disponible:

Voir [annoncer] Git 1.7.11.rc1 :

git difftool " j'ai appris l'option " --dir-diff "pour lancer des outils externes diff qui peuvent comparer deux hiérarchies de répertoires à un moment après peupler deux temporaires répertoires, au lieu d'exécuter une instance de l'outil externe une fois par paire de fichiers .

Voir " Patch difftool : enseigner difftool pour gérer le répertoire des diff "


réponse Originale à cette question (janvier 2010)

on pourrait tirer une copie des fichiers modifiés de la mise en scène / vérifié dans les fichiers dans un dossier temporaire, puis ouvrez ça. Est-ce la seule option?

fondamentalement Oui:

Vous difftool script:

  • créer 2 répertoires temp
  • se définit comme un outil diff
  • appel git diff
    • qui s'appelle alors pour file to diff
    • dans ce mode, le même script, pour chaque fichier, ne copie les deux versions diffèrent dans les deux répertoires temp
  • puis Continuer et appeler des outils diff (comme beyondCompare ou WinMerge) sur les deux répertoires temp

vous avez un premier exemple dans cette question .

39
répondu VonC 2017-05-23 11:47:25

j'utilise toujours --dirstat=files :

rudie@devver:virenze$ git diff --dirstat=files
   4.1% modules/custom/virenze_conversations/
   7.0% modules/custom/virenze_crs/
   8.3% modules/custom/

ce qui signifie que j'ai supprimé virenze_conversations et virenze_crs dans custom . (Je ne sais pas ce que les pourcentages signifient...)

vous pouvez probablement utiliser toutes les options normales diff : --cached , nom de la branche, etc.

2
répondu Rudie 2013-12-23 12:13:03