web-dev-qa-db-fra.com

Comment faire git diff écrire sur stdout?

Par défaut git diff imprime tout +- lignes vers la sortie standard mais j'ai une machine (devian) (que je connecte via ssh) où git diff me conduit vers un éditeur (dont je ne sais pas lequel) et je dois appuyer sur q continuer.

J'ai checker git config et ça 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 qui me manque? Peut-être que l'outil inconnu est un repli ou quelque chose parce que ma machine manque quelque chose? Toute aide est appréciée. Merci.

66
nacho4d

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

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

Cela peut être exécuté pour n'importe quelle commande Git.

Si vous souhaitez le désactiver par défaut pour diff uniquement, vous pouvez définir le pager diff sur cat en exécutant:

$ git config pager.diff false

Si vous souhaitez le désactiver par défaut pour toutes les commandes, vous pouvez définir le pager Git sur cat en exécutant:

$ git config --global core.pager cat
126
mipadi

Le suivant core.pager value utilise less, qui imprime sur stdout, et possède également une fonctionnalité de pageur (si nécessaire), permettant le défilement vers le haut et vers le bas (contrairement à cat):

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

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

20
friederbluemle

Vous pouvez également simplement utiliser cat pour n'importe quelle commande git si vous ne vous souciez pas des couleurs.

Alors git diff | cat pour votre cas.

Edit: comme indiqué dans les commentaires si vous vous souciez des couleurs utilisées:

git diff --color | cat

10
Shasak