git diff – gérer les longues lignes?

J’exécute gitdiff sur un fichier, mais le changement est à la fin d’une longue ligne.

Si j’utilise les touches fléchées pour me déplacer à droite, le code couleur disparaît et, pire, les lignes ne sont pas alignées, ce qui complique le suivi du changement.

Y a-t-il un moyen de prévenir ce problème ou de simplement faire en sorte que les lignes s’enroulent à la place?

(en cours d’exécution git 1.5.5 via mingw32)

L’affichage de la sortie de git diff est géré par le pager que vous utilisez.

Généralement, sous Linux, less serait utilisé.

Vous pouvez dire à git d’utiliser un autre pager en définissant la variable d’environnement GIT_PAGER . Si cela ne vous dérange pas de la pagination (par exemple, votre terminal vous permet de faire défiler la page), vous pouvez essayer de définir explicitement GIT_PAGER à vide pour l’arrêter à l’aide d’un pager. Sous Linux:

 $ GIT_PAGER='' git diff 

Sans téléavertisseur, les lignes s’envelopperont.

Si votre terminal ne prend pas en charge la sortie en couleur, vous pouvez également désactiver cette option en utilisant l’argument --no-color ou en insérant une entrée dans la section couleur de votre fichier de configuration git.

 $ GIT_PAGER='' git diff --no-color 

Ou si vous utilisez moins comme pagineur par défaut, tapez -S tout en visualisant le diff à réenrouler le wrapper en moins.

Vous pouvez également utiliser git config pour configurer le pager à envelopper.

 $ git config core.pager 'less -r' 

Définit le paramètre du pager pour le projet en cours.

 $ git config --global core.pager 'less -r' 

Définit le pager globalement pour tous les projets

Josh Diehl, dans un commentaire sur cette réponse , a tout à fait l’impression que cela devrait être une réponse, en l’ajoutant:

L’une des façons de gérer les différences entre les lignes longues consiste à utiliser un diff à base de mots. Cela peut être fait avec:

 git diff --word-diff 

Dans ce cas, vous obtiendrez une sortie diff sensiblement différente, qui vous indiquera précisément ce qui a changé dans une ligne.

Par exemple, au lieu d’obtenir quelque chose comme ceci:

 diff --git a/test-file.txt b/test-file.txt index 19e6adf..eb6bb81 100644 --- a/test-file.txt +++ b/test-file.txt @@ -1 +1 @@ -this is a short line +this is a slightly longer line 

Vous pourriez obtenir quelque chose comme ceci:

 diff --git a/test-file.txt b/test-file.txt index 19e6adf..eb6bb81 100644 --- a/test-file.txt +++ b/test-file.txt @@ -1 +1 @@ this is a [-short-]{+slightly longer+} line 

Ou, avec la colorisation, au lieu de cela:

résultat de juste <code/> git diff “></p>
<p>  Vous pourriez obtenir ceci: </p>
<p><img src=

Pour utiliser moins comme pagineur et rendre permanent le retour à la ligne, vous pouvez simplement activer l’option de pliage des lignes longues:

 git config --global core.pager 'less -+S' 

De cette façon, vous n’avez pas à le saisir en utilisant moins.

À votre santé

Juste googlé celui-ci. GIT_PAGER='less -r' fonctionne pour moi

Mac OSX: Aucune des autres réponses, à l’exception de celle de quelqu’un45, alors que moins de courriers fonctionnaient, a fonctionné pour moi. Il a fallu ce qui suit pour rendre le retour à la ligne persistant:

 git config --global core.pager 'less -+$LESS -FRX' 

Depuis Git 1.5.3 ( sept 2007 )

une option --no-pager est disponible.

 git --no-pager diff 

Comment puis-je empêcher git diff d’utiliser un pager?

Exemple

À partir de la version 2.1, wrap est la valeur par défaut

Notes de version de Git v2.1

Huit ans plus tard, je trouve une réponse supérieure, de https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :

 git config core.pager `fold -w 80 | less` 

Maintenant, vous passez le git diff à travers le pli, d’abord, puis à moins: enveloppé, moins la hauteur de la page est correcte, conservez la coloration syntaxique.

Vous pouvez simplement diriger la sortie de git diff vers plus:

 git diff | more 

Pas une solution parfaite, mais gitk et git-gui peuvent à la fois afficher ces informations et avoir des barres de défilement.

Lorsque vous utilisez “git diff” et qu’il affiche plusieurs pages (vous voyez “:” à la fin de la page) dans ce cas, vous pouvez taper “-S” et appuyer sur Entrée (S doit être majuscule). il va basculer les longues lignes de pliage.

Personne ne l’a signalé jusqu’à maintenant. C’est assez simple à retenir et aucune configuration supplémentaire ne doit être effectuée dans la configuration de git

 git diff --color | less -R 

liste la configuration actuelle / par défaut:

  $ git config --global core.pager less -FXRS -x2 

puis mettre à jour et laisser le -S comme:

  $ git config --global core.pager 'less -FXR -x2' 

the -S: provoque le hachage des lignes plus longues que la largeur de l’écran plutôt que le pliage.

En cas de problème, j’ai souvent recours à DiffMerge. Excellent outil de diff qui présente une mise en surbrillance en ligne. En outre, dans les dernières versions, ils ont ajouté un mode pour avoir un mode horizontal.

Cependant, je n’ai pas pu configurer git pour l’utiliser. Je dois donc me débrouiller pour obtenir les deux versions du fichier en premier.

Le moyen facile de le faire, dans mon cas, j’utilise Linux

 git diff > text.txt 

Cette ligne de commande crée et place la sortie git diff dans le fichier text.txt, puis vous pouvez l’ouvrir avec un autre éditeur de texte, par exemple du texte sublime.

 sublime text.txt 

J’espère que cela vous aidera.

N’oubliez pas de le supprimer après. = 0)