Je courais git-diff sur un fichier, mais le changement est à la fin d'une longue ligne.
Si j'utilise les touches de curseur pour me déplacer vers la droite, cela perd le codage couleur — 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 boucler les lignes?
J'utilise Git 1.5.5 via mingw32.
git diff --color-words | fold
fold
mais cela supprime la couleur. Puisque vous spécifiez,--color-words
je suppose que vous avez réussi à transmettre des couleurs àfold
. Comment?Réponses:
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 pager différent en définissant la
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 la valeurGIT_PAGER
vide pour l'arrêter à l'aide d'un pager. Sous Linux:Sans téléavertisseur, les lignes s'enrouleront.
Si votre terminal ne prend pas en charge la sortie colorée, vous pouvez également désactiver cette option en utilisant soit l'
--no-color
argument, soit en plaçant une entrée dans la section couleur de votre fichier de configuration git.la source
Ou si vous utilisez moins comme pageur par défaut, tapez simplement
-S
tout en visualisant le diff pour réactiver l'habillage en moins.la source
--word-diff
pour voir un surlignage codé par couleur des mots modifiés--word-diff
partie mérite d'avoir sa propre réponse à ce sujet, car elle me semble faire beaucoup pour résoudre le problème sous-jacent: comprendre ce qui a changé sur une longue ligne. Donc, j'en ai fait un: stackoverflow.com/a/19253759/313756-S
avec un S majuscule, non-s
. Moins affiche un message «Pliez les longues lignes (appuyez sur RETOUR)» en bas après avoir tapé-S
, puis appuyez sur Retour pour activer l'habillage.Vous pouvez également utiliser
git config
pour configurer le pager pour envelopper.Définit le paramètre de pageur pour le projet en cours.
Définit le pager globalement pour tous les projets
la source
git config --global core.pager "less -r"
man less
,-r
ne dit rien sur l'emballage.Avec tout le crédit que je dois à Josh Diehl dans un commentaire à cette réponse , je pense néanmoins que cela devrait être une réponse en soi, l'ajoutant ainsi:
Une façon de gérer les différences dans les longues lignes consiste à utiliser un diff orienté sur les mots. Cela peut être fait avec:
Dans ce cas, vous obtiendrez une sortie diff sensiblement différente, qui vous montrera spécifiquement ce qui a changé au sein d'une ligne.
Par exemple, au lieu d'obtenir quelque chose comme ça:
Vous pourriez obtenir quelque chose comme ceci:
Ou, avec colorisation, au lieu de cela:
Vous pourriez obtenir ceci:
Maintenant, si vous comparez une très longue file d'attente, vous pouvez toujours avoir des problèmes avec la situation du téléavertisseur que vous avez décrite à l'origine, et qui a été traitée, apparemment à la satisfaction, dans d'autres réponses. J'espère que cela vous donnera un nouvel outil, cependant, pour identifier plus facilement ce qui a changé sur la ligne.
la source
--word-diff
:color
,plain
etporcelain
. De plus, on peut changer l'expression régulière des limites de mots avec--word-diff-regex
. La valeur par défaut semble être\S+
. ( v2.1.1 )--color-words
semble être un raccourci pour--word-diff=color
, ce qui est bien lorsque vous regardez simplement le diff, pas le partager.--word-diff=porcelain
mieux que--word-diff
parce queporcelain
les modifications seront alignées sur des lignes distinctes, tandis que--word-diff
les modifications seront intégrées. Des lignes séparées vous permettent de voir les différences plus facilement lorsque les différences sont subtiles.Pour utiliser moins en tant que téléavertisseur et rendre l'habillage de ligne permanent, vous pouvez simplement activer l'option de pliage des lignes longues:
De cette façon, vous n'avez pas besoin de le saisir lorsque vous utilisez moins.
À votre santé
la source
git config --global core.pager 'less -S
Je viens de googler celui-ci.
GIT_PAGER='less -r'
travaille pour moila source
less -R
(En fait, j'utiliseless -eiFRSX
, ce qui résout également les problèmes de couleur et de retour à la ligne.)Mac OSX: Aucune des autres réponses sauf le «-S» de quelqu'un45 alors que moins fonctionne fonctionne pour moi. Il a fallu ce qui suit pour rendre le retour à la ligne persistant:
la source
-+$LESS
paramètre? À moins que git ne le définisse, ma variable d'environnement LESS n'est même pas définie.$LESS
est défini sur une certaine valeur (par exemple par un.login
ou un.profile
ou quelque chose), et cette option, je pense, ajoute simplement les valeurs par défaut, puis ajoute-FRX
en plus de celles-ci.$LESS
n'est pas défini.Depuis Git 1.5.3 ( sept. 2007 )
une
--no-pager
option est disponible.Comment empêcher git diff d'utiliser un pager?
Exemple
À partir de la v2.1, l'habillage est la valeur par défaut
Notes de publication de Git v2.1
la source
Huit ans plus tard, je trouve une réponse supérieure, à partir de /superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
Maintenant, vous dirigez le diff git à travers le pli, d'abord, puis vers moins: enveloppé, moins la hauteur de page est correcte, gardez la coloration syntaxique.
la source
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 appuyez sur Entrée. (S devrait être le capital). il fera basculer les longues lignes de pliage.
la source
Personne ne l'a signalé jusqu'à présent. C'est assez simple à retenir et aucune configuration supplémentaire ne doit être effectuée dans la configuration git
la source
git diff --color | less -FR
pour les petits changements lorsque vous n'avez pas besoin de faire défilerVous pouvez simplement diriger la sortie de git diff vers plus:
la source
Pas une solution parfaite, mais
gitk
etgit-gui
peut à la fois afficher ces informations et avoir des barres de défilement.la source
liste la configuration actuelle / par défaut:
puis mettez à jour et omettez le -S comme:
-S: les lignes plus longues que la largeur de l'écran sont coupées plutôt que pliées.
la source
En cas de problème, je recourt souvent à DiffMerge. Excellent outil de différenciation avec mise en évidence des différences 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 fouiller pour obtenir les deux versions du fichier en premier.
la source