git diff - gérer les longues lignes?
Question
J'utilise git-diff sur un fichier, mais la modification a 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 rend plus difficile le suivi du changement.
Existe-t-il un moyen de prévenir ce problème ou de simplement envelopper les lignes à la place?
(exécutant git 1.5.5 via mingw32)
La solution
L'affichage de la sortie de git diff
est géré par le pager que vous utilisez.
Généralement, sous Linux, moins
serait utilisé.
Vous pouvez dire à git d'utiliser un autre pageur en définissant la variable d'environnement GIT_PAGER
. 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
de manière à ce qu'il soit vide pour l'arrêter à l'aide d'un pageur. Sous Linux:
$ GIT_PAGER='' git diff
Sans un pager, les lignes seront bouclées.
Si votre terminal ne prend pas en charge la sortie en couleur, vous pouvez également désactiver cette option à l'aide de 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
Autres conseils
Ou si vous utilisez moins comme téléavertisseur par défaut, tapez simplement -S
lorsque vous affichez le diff pour réactiver le retour à la ligne en moins.
Vous pouvez également utiliser git config
pour configurer le pageur afin qu'il soit bouclé.
$ git config core.pager 'less -r'
Définit le paramètre de pageur du projet en cours.
$ git config --global core.pager 'less -r'
Définit le pager globalement pour tous les projets
Avec un crédit complet pour Josh Diehl dans un commentaire à cette réponse , J'estime néanmoins que cela devrait être une réponse en soi, ajoutant donc:
L’utilisation d’un diff orienté mot est l’un des moyens de voir les différences entre les lignes longues. Cela peut être fait avec:
git diff --word-diff
Dans ce cas, vous obtiendrez une sortie diff très différente, qui indique 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 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 ceci:
Vous pourriez obtenir ceci:
Maintenant, si vous comparez une très longue ligne, vous pouvez toujours rencontrer des problèmes avec la situation du 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 l’habillage de 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 lorsque vous utilisez moins.
A bientôt
Juste googlé celui-ci. GIT_PAGER = 'less -r'
fonctionne pour moi
Mac OSX: Aucune des autres réponses, à l'exception du "-S" de45, si moins est en cours d'exécution, a fonctionné pour moi. Il a fallu ce qui suit pour rendre le word-wrap 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 éviter que git diff utilise 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, 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 dirigez le git diff à travers un pli, d’abord, puis sur less: les pages enveloppées, moins la hauteur de la page est correcte, conservez la coloration syntaxique en surbrillance.
Vous pouvez simplement diriger la sortie de git diff vers plusieurs:
git diff | more
La solution n'est pas parfaite, mais gitk
et git-gui
peuvent tous deux afficher cette information,
et ont des barres de défilement.
Lorsque vous utilisez " git diff " et il affiche plusieurs pages (vous voyez ": " à la fin de la page). Dans ce cas, vous pouvez taper " -S " et appuyez sur enter. (S devrait être capital). il va basculer les longues lignes.
Personne ne l’a souligné jusqu’à présent. C’est assez simple à retenir et aucune configuration supplémentaire n’a besoin d’ê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'
the -S: coupe les lignes plus longues que la largeur de l'écran plutôt que les plie.
En cas de problème, je recourt souvent à DiffMerge. Excellent outil de diff qui a la surbrillance des diff en ligne. De plus, 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 passer à autre chose pour obtenir les deux versions du fichier.
La façon simple de le faire, dans mon cas, j'utilise Linux OS
git diff > text.txt
Cette ligne de commande crée et place la sortie git diff dans le fichier text.txt alors vous pouvez l'ouvrir avec un autre éditeur de texte, par exemple sublime text.
sublime text.txt
J'espère que cela vous aidera.
ne pas oublier de le supprimer après. = 0)