J'exécute git-diff sur un fichier, mais la modification est à la fin d'une longue ligne.
Si j'utilise les touches du curseur pour aller à droite, les codes de couleur sont perdus et, pire encore, les lignes ne s'alignent pas, ce qui complique le suivi du changement.
Existe-t-il un moyen de prévenir ce problème ou simplement de boucler les lignes?
(exécutant git 1.5.5 via mingw32)
L'affichage de la sortie de git diff
est géré par le téléavertisseur que vous utilisez.
Généralement, sous Linux, less
serait utilisé.
Vous pouvez dire à git d’utiliser un autre pageur en plaçant le GIT_PAGER
variable d'environnement. Si la pagination ne vous dérange pas (par exemple, votre terminal vous permet de revenir en arrière), vous pouvez essayer de définir explicitement GIT_PAGER
vider pour l'arrêter à l'aide d'un téléavertisseur. Sous Linux:
$ GIT_PAGER='' git diff
Sans un pager, les lignes seront bouclées.
Si votre terminal ne prend pas en charge la sortie couleur, vous pouvez également désactiver cette option à l'aide de la touche --no-color
argument, ou en plaçant 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 téléavertisseur par défaut, tapez simplement -S
tout en visualisant le diff pour réactiver l’emballage en moins.
Vous pouvez aussi utiliser git config
pour configurer le pager à envelopper.
$ git config core.pager 'less -r'
Définit les paramètres du pager pour le projet en cours.
$ git config --global core.pager 'less -r'
Définit le pager globalement pour tous les projets
Avec tout le mérite de Josh Diehl à n commentaire à cette réponse , j’ai néanmoins l’impression que cela devrait être une réponse à lui-même, aussi en l’ajoutant :
Un moyen de gérer les différences de lignes longues consiste à utiliser un diff orienté Word. Cela peut être fait avec:
git diff --Word-diff
Dans ce cas, vous obtiendrez une sortie diff très différente, qui vous montrera spécifiquement 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 ça:
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 ceci:
Vous pourriez obtenir ceci:
Maintenant, si vous comparez une très longue ligne, vous pouvez toujours rencontrer des problèmes avec la situation de téléavertisseur que vous avez décrite à l'origine et qui a été traitée, apparemment de manière satisfaisante, dans d'autres réponses. Espérons que cela vous donne un nouvel outil, cependant, pour identifier plus facilement ce qui a changé sur la ligne.
Pour utiliser moins comme pageur et rendre le retour à la ligne permanent, vous pouvez simplement activer l’option pli-long-lignes:
git config --global core.pager 'less -+S'
De cette façon, vous ne devez pas le taper en utilisant moins.
À votre santé
Juste googlé jusqu'à celui-ci. GIT_PAGER='less -r'
travaille pour moi
Mac OSX: Aucune des autres réponses, à l'exception du "-S" de45, alors que moins fonctionne, a fonctionné pour moi. Il a fallu ce qui suit pour rendre Word-wrap persistant:
git config --global core.pager 'less -+$LESS -FRX'
Depuis Git 1.5.3 ( Sep 2007 )
une --no-pager
l'option est disponible.
git --no-pager diff
Comment empêcher Git Diff d'utiliser un pager?
À partir de la version 2.1, le bouclage est la valeur par défaut.
Huit ans plus tard, je trouve une réponse supérieure, à partir de https: //superuser.com/questions/777617/line-wrapping-less-in-os-x-specally-for-use-with-git-diff :
git config core.pager `fold -w 80 | less`
Maintenant, vous dirigez le git diff par le pli, d’abord, puis sur less: la valeur de hauteur de page réduite est correcte, conservez la coloration syntaxique en surbrillance.
Vous pouvez simplement diriger la sortie de git diff vers plus:
git diff | more
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 en majuscule). il va basculer les longues lignes.
Pas une solution parfaite, mais gitk
et git-gui
peut à la fois afficher cette information et comporter des barres de défilement.
Personne ne l'a fait remarquer jusqu'à maintenant. C'est assez simple à retenir et aucune configuration supplémentaire ne doit être faite dans la configuration git
git diff --color | less -R
liste la configuration actuelle/par défaut:
$ git config --global core.pager
less -FXRS -x2
puis mettez à jour et laissez de côté le -S comme:
$ git config --global core.pager 'less -FXR -x2'
-S: les lignes plus longues que la largeur de l'écran sont hachées plutôt que pliées.