Le comportement par défaut de git diff est d'ouvrir chaque fichier diff en série (attendez que le fichier précédent soit fermé avant d'ouvrir le fichier suivant).
Je cherche un moyen d'ouvrir tous les fichiers à la fois - dans BeyondCompare par exemple, cela ouvrirait tous les fichiers dans des onglets dans la même fenêtre BC.
Cela faciliterait l'examen d'un ensemble complexe de changements; feuilletez d'avant en arrière entre les fichiers diff et ignorez les fichiers sans importance.
Réponses:
À partir de la version
git
1.7.11, vous pouvez utilisergit difftool --dir-diff
pour effectuer une différence de répertoire.Cette fonctionnalité fonctionne bien avec Meld 3.14.2 par exemple, et vous permet de parcourir tous les fichiers modifiés:
Il s'agit d'une fonction Bash pratique:
La réponse qui suit s'applique aux
git
installations antérieures à la v1.7.11.Cette même question a été posée sur la liste de diffusion git .
J'ai mis en place un script shell basé sur ce fil de messagerie qui effectue une différence de répertoire entre les validations arbitraires.
Depuis git v1.7.10, le
git-diffall
script est inclus dans l'contrib
installation standard de git.Pour les versions antérieures à la v1.7.10, vous pouvez installer à partir du
git-diffall
projet sur GitHub .Voici la description du projet:
la source
git difftool --dir-diff
et Beyond Compare): J'ai contacté Scooter Software (auteurs de Beyond Compare) et ils disent que cebcompare.exe
n'est pas une solution prise en charge et peut causer des problèmes s'il y a plus d'un diff ouvert à la fois. Ils prévoient d'ajouter la prise en charge des différences de dossierbcomp.exe
dans une future version (en attendant, je continuerai à l'utiliserbcompare.exe
comme solution de contournement non prise en charge).--dir-diff
fonctionne parfaitement avec Meld. De là, il vous permettra de sélectionner et d'afficher les différences pour les fichiers individuels.Voici ce sur quoi je me suis installé ...
Copiez le code suivant dans un fichier appelé
git-diffall
(sans extension):Placez le fichier dans le
cmd
dossier de votre répertoire d'installation git (par exempleC:\Program Files (x86)\Git\cmd
)Et utilisez comme vous le feriez
git diff
:Remarques: La clé est le & param qui indique à la commande diff externe de s'exécuter dans une tâche en arrière-plan afin que les fichiers soient traités immédiatement. Dans le cas de BeyondCompare, cela ouvre un écran avec chaque fichier dans son propre onglet.
la source
"$filename"
à"../$filename"
. Ensuite, cela a parfaitement fonctionné avec Beyond Comparegit-diffall
fichier auC:\Program Files\Git\cmd
dossier? J'ai fait exactement comme indiqué mais en faisant$ git diffall git: 'diffall' is not a git command. See 'git --help'. Did you mean this? difftool
meld
a une fonctionnalité intéressante que si vous lui donnez un répertoire sous contrôle de source (Git, Mercurial, Subversion, Bazaar et probablement d'autres), il répertoriera automatiquement tous les fichiers modifiés et vous pouvez double-cliquer pour afficher les différences individuelles.IMO, il est beaucoup plus facile de taper
meld .
et de comprendre le VCS que de configurer votre VCS pour le lancermeld
. De plus, vous pouvez utiliser la même commande, quel que soit le VCS que votre projet utilise, ce qui est génial si vous passez souvent de l'un à l'autre.Le seul inconvénient est qu'il est plus lent pour meld de rechercher des modifications que de passer les modifications de git / hg / svn, bien que la lenteur de ce problème dépende de la façon dont vous l'utilisez, j'en suis sûr.
la source
git diff
qui ne propose pas.J'ai trouvé cette méthode (GitDiff.bat et GitDiff.rb) qui copie les fichiers dans les anciens / nouveaux répertoires temporaires et fait ensuite une comparaison de dossiers sur eux.
Mais je préfère afficher les fichiers de travail directement (à partir du répertoire de travail), car BeyondCompare a la fonctionnalité pratique de pouvoir modifier le fichier à partir de la fenêtre de comparaison, ce qui est idéal pour les nettoyages rapides.
Edit: une méthode similaire ici en réponse à ma question sur la liste de diffusion git.
la source
git meld
=> https://github.com/wmanley/git-meld est un script génial qui ouvrira un diff soigné de tous les fichiers dans une seule fenêtre.la source
A remarqué ici que Araxis Merge a une option de commande '-nowait':
Peut-être que cela renvoie un code de sortie immédiat et fonctionnerait, quelqu'un a-t-il vécu cela? Impossible de trouver une option similaire pour BeyondCompare ...
la source
Diffuse a également une intégration VCS. Il interagit avec une pléthore d'autres VCS, y compris SVN, Mercurial, Bazaar, ... Pour Git, il affichera même trois volets si certains mais pas tous les changements sont mis en scène. En cas de conflit, il y aura même quatre volets.
Invoquez-le avec
dans votre copie de travail Git.
Si vous me demandez, le meilleur visuel diffère que j'ai vu depuis une décennie. (Et j'ai aussi essayé le meld.)
la source
Si tout ce que vous voulez faire est d'ouvrir tous les fichiers actuellement modifiés, essayez quelque chose comme:
Si vous effectuez des validations d '«ensembles complexes de modifications», vous souhaiterez peut-être reconsidérer votre flux de travail. L'une des fonctionnalités vraiment intéressantes de git est qu'il permet au développeur de réduire facilement les ensembles de modifications complexes en une série de correctifs simples. Plutôt que d'essayer de modifier tous les fichiers qui sont actuellement modifiés, vous voudrez peut-être examiner
qui vous permettra de mettre en scène sélectivement des mecs.la source
J'ai écrit un script PowerShell qui dupliquera deux arbres de travail et les comparera avec DiffMerge. Vous pouvez donc faire:
Par exemple, pour comparer la branche principale trois archivages avec l'arborescence de travail actuelle.
Son brillant et nouveau et probablement plein de bugs. Un inconvénient est que les fichiers de votre arborescence de travail qui n'ont pas encore été ajoutés sont copiés dans les deux arborescences de travail. Cela peut aussi être lent.
http://github.com/fschwiet/GitNdiff
la source
Pour ceux qui souhaitent utiliser git-diffall sur Mac OS X avec Araxis, j'ai bifurqué le projet git-diffall sur github et ajouté un AppleScript qui encapsule la commande Araxis Merge. Remarque: il s'agit d'un clone légèrement modifié du
araxisgitdiff
fichier fourni avec Araxis Merge pour Mac OS X.https://github.com/sorens/git-diffall
la source
Les travaux suivants avec meld et kdiff3
Ouvre tous les fichiers dans une fenêtre que vous pouvez parcourir facilement. Peut être utilisé avec des changesets à la place de l'origine / du nom de la branche
par exemple:
git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
la source
Vous pouvez utiliser gitk et voir toutes les différences en même temps
la source