2013-06-13 15 views
47

Per impostazione predefinita, git diff stampa tutte le righe +- sullo stdout, tuttavia ho una macchina (devian) (che connetto tramite ssh) dove git diff mi porta a un editor (che non so quale sia) e devo premere q per continuare.Come rendere git diff scrivere su stdout?

Sono checker config git e sembra:

$ git config --list 
user.name=XXX 
[email protected] 
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 
[email protected] 
color.ui=false 
difftool.prompt=false 
mergetool.prompt=false 
$ git config --system --list 
'/etc/gitconfig': No such file or directory 

C'è un posto che mi manca? Forse lo strumento sconosciuto è un ripiego o qualcosa del genere perché alla mia macchina manca qualcosa? Qualsiasi aiuto è apprezzato. Grazie.

+0

possibile duplicato di [Come impedire a git diff di utilizzare un cercapersone?] (Http://stackoverflow.com/questions/2183900/how-do-i-prevent-git-diff-from-using-a- cercapersone) –

risposta

87

Per impostazione predefinita, Git invia il suo output diff (e in genere qualsiasi output che può essere più di uno screenful) al cercapersone del sistema, che è un'utilità che stampa solo una schermata di output alla volta. Se si desidera disattivare il cercapersone quando si esegue un comando, passare a Git --no-pager:

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

Questo può essere eseguito per qualsiasi comando Git.

Se si desidera disabilitare di default per diff solo, è possibile impostare il cercapersone diff per cat eseguendo:

$ git config pager.diff false 

Se si desidera disabilitare di default per tutti i comandi, è possibile impostare il cercapersone Git per cat eseguendo:

$ git config --global core.pager cat 
+0

Non conoscevo il cercapersone. 'git config --global core.pager cat' lo ha fatto !. Grazie :) – nacho4d

+1

su OSX: "errore: opzione non valida: --no-pager" – aaronbauman

+4

@aaronbauman: lo hai passato a 'git' (_non_il sottocomando)? – mipadi

9

il core.pager valore seguente utilizza less, che stampa a stdout, ed inoltre ha funzionalità cercapersone (se necessario), consentendo lo scorrimento su e giù (a differenza cat):

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

Si chiude immediatamente se il diff inserisce sul primo schermo (-F), uscite caratteri di controllo non elaborati (-R), taglia le linee lunghe anziché quelle di avvolgimento (-S) e non utilizza le stringhe termcap init/deinit (-X).

Questo è stato testato su Ubuntu 15.04.

5

È anche possibile utilizzare semplicemente cat per qualsiasi comando git se non si cura dei colori.

Quindi git diff | cat per il tuo caso.

+3

E se ti preoccupi dei colori, fai 'git diff --color | gatto' (: – xjcl