2016-10-12 4 views
1

J'ai parfois une longue ligne de code dans le repo git (par exemple un fichier de configuration json), et git diff va générer une sortie comme ci-dessous.Comment configurer git-diff pour que la longue ligne ne s'enroule pas?

long line

Sur une instance EC2, je ne git diff pas envelopper le contenu à la ligne suivante, génératrice sortie suivante (je peux utiliser les touches gauche/droite pour naviguer), que je préfère personnellement.

short line

Est-ce que quelqu'un sait comment je peux config la git-diff de passer d'un comportement à un autre?

+0

Si vous utilisez 'less' comme pager, définissez l'option' -S'. (J'aime penser que S représente «Sideways Scroll».) Les paramètres par défaut de Git sont complexes: voir http://stackoverflow.com/a/18781512/1256452. Notez que le réglage 'S' peut interférer un peu avec' F': http://unix.stackexchange.com/q/231427/162084 – torek

Répondre

1

C'est votre programme terminal ou pager qui enveloppe les lignes, pas git diff. Essayez de rediriger la sortie de git diff dans un fichier et ouvrez-le avec un éditeur qui permet de contrôler l'habillage - vous verrez que les lignes ne sont pas réellement encapsulées.

Vous pouvez essayer ceci:

git diff|cut -c -$COLUMNS 

Notez cependant qu'il désactive les couleurs et la pagination.

+0

Passer '--color' à git diff forcera les couleurs, mais les lignes sont coupez visiblement court avant d'atteindre réellement '$ COLUMNS', un char pour chaque couleur ANSI dans la ligne. –

0

Merci à la réponse en ligne de torek ci-dessus. Basé sur cela, j'ai réalisé que je peux faire git diff | less -S pour réaliser ce que je veux. Il fait mieux que la solution cut -c -$COLUMNS car il ne perd aucun contexte (je peux toujours utiliser le bouton gauche et droit pour voir toutes les différences).