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)

Était-ce utile?

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:

résultat de seulement <code> git diff </code>

Vous pourriez obtenir ceci:

résultat de <code> git diff - mot-diff </code>

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?

Exemple

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

Publication de Git v2.1 Notes

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top