146 votes

Comment faire en sorte que git diff écrive sur stdout ?

Par défaut git diff imprime tous les +- dans le stdout, mais j'ai une machine (devian) (à laquelle je me connecte via ssh) sur laquelle git diff me conduit à un éditeur (dont je ne sais pas lequel) et je dois appuyer sur q pour continuer.

J'ai vérifié la configuration de git et elle ressemble à :

$ git config --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
user.email=XXX@XXX
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
'/etc/gitconfig': No such file or directory

Y a-t-il un endroit que j'ai oublié ? Peut-être que l'outil inconnu est une solution de repli parce qu'il manque quelque chose à ma machine ? Toute aide est la bienvenue. Merci.

232voto

mipadi Points 135410

Par défaut, Git envoie sa sortie diff (et généralement toute sortie qui peut être plus qu'une page d'écran) vers le fichier de configuration du système Téléavertisseur qui est un utilitaire qui n'imprime qu'un seul écran de sortie à la fois. Si vous voulez désactiver le pager lorsque vous exécutez une commande, passez la commande --no-pager à Git :

$ git --no-pager <subcommand> <options>

Ceci peut être exécuté pour toute commande Git.

Si vous voulez le désactiver par défaut pour diff seulement vous pouvez régler le pager diff sur cat en courant :

$ git config pager.diff false

Si vous voulez le désactiver par défaut pour toutes les commandes vous pouvez régler le pager Git sur cat en courant :

$ git config --global core.pager cat

44voto

friederbluemle Points 796

Les éléments suivants core.pager valeurs utilisées less qui imprime vers stdout, et possède également une fonctionnalité de pager (si nécessaire), permettant le défilement vers le haut et vers le bas (contrairement à la fonction cat ) :

$ git config --global core.pager "less -FRSX"

Il s'arrête immédiatement si le diff tient sur le premier écran ( -F ), sort des caractères de contrôle bruts ( -R ), coupe les longues lignes au lieu de les envelopper ( -S ), et n'utilise pas les chaînes init/deinit de termcap ( -X ).

34voto

Shasak Points 355

Vous pouvez aussi simplement utiliser cat pour tout git si vous ne vous souciez pas des couleurs.

Alors git diff | cat pour votre affaire.

Editar: comme indiqué dans les commentaires si vous vous souciez de l'utilisation des couleurs :

git diff --color | cat

2voto

user5783745 Points 1214

Comme @mipadi souligne que c'est aussi simple que ça :

git --no-pager diff

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X