web-dev-qa-db-fra.com

Git: supprime les plus / moins en tête des lignes dans diff

Ma question est assez simple, mais je n'ai pas eu de chance de trouver une réponse.

Je voudrais supprimer les principaux symboles plus/moins de chaque ligne dans git diff. Avant de vous demander pourquoi je souhaite le faire, permettez-moi d'exposer mes raisons:

  1. Les lignes qui sont exactement 80 caractères déborderont par un seul caractère, ce qui semble tout simplement maladroit
  2. La coloration me suffit pour distinguer les ajouts/suppressions
  3. Je préfère conserver la largeur de la fenêtre de mon terminal à 80 caractères (par opposition à 81 caractères arbitraires) pour maintenir la cohérence avec tout ce que je fais dans mon terminal (en dehors de git)

Existe-t-il une option de configuration pour ce faire? Sinon, comment puis-je le faire d'une manière qui me permette toujours de parcourir mon style diff less?

Toute idée serait grandement apprécié.

41
caleb531

Une option consiste à utiliser sed pour supprimer le caractère indésirable de diff, tout en préservant la couleur:

git diff --color | sed -r "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

(Notez que vous devez également supprimer l'espace de tête, car il est émis par diff.)

27
nullptr

La façon la plus simple que j'ai vue est la suivante. Beaucoup facile à retenir (Le format du texte change. Vous devez donc connaître le changement de code)

git diff - mots-couleurs



Voici un moyen de le faire par défaut
Si vous utilisez Linux, ajoutez la commande suivante à votre fichier ~/.bashrc
Ensuite, vous pouvez utiliser gitdiff sans espace comme autre commande.

alias gitdiff='git diff --color-words'


Mise à jour:
Pour définir l'alias directement via git config (sans l'aide de ~/.bashrc)
https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
Merci @dylankb pour cela.

Exemple: Si vous entrez la commande git config --global alias.ci commit;
alors vous pouvez utiliser git ci pour le reste de votre vie pour vous engager !!

Happy Gitting :)

82
smilyface

Pour les utilisateurs de Mac, vous devrez utiliser la commande ci-dessous:

git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

caleb531 l'a fourni dans la réponse acceptée mais il y avait une petite faute de frappe.

Ensuite, si vous souhaitez ajouter ceci à un alias, vous pouvez procéder comme suit:

alias gitdiff='git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r'

5
Kyle Venn

Si je peux répondre à ma propre question, j'ai finalement décidé d'utiliser un outil appelé diff-so-fancy . Il supprime non seulement le +/- de mes différences, mais il rationalise également les en-têtes de fichier et met en évidence les changements au sein de chaque ligne.

diff-so-fancy

4
caleb531