2011-10-12 14 views
39

Ho un paio di repository git che appartengono insieme, e un semplice file batch/bash per passarci sopra. Li sovrascrivo spesso con un comando di registro per vedere rapidamente in che stato si trovano. Funziona bene, tranne che per una cosa: se il messaggio di commit è più lungo del numero di caratteri che la mia console è ampia (o ha più righe), git mostra la riga, quindi una nuova riga con (FINE) e devo premere q per continuare (suppongo che convoglia l'output attraverso altro o qualcosa del genere). Esempio:Come rendere il log git non pronto per continuare?

> gitloop . "git log --decorate=short --pretty=oneline -n1" 
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log 

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log 

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log 
-(END) 

Questo è piuttosto scomodo come devo premere q un paio di tempo, mentre vorrei solo vedere tutti quei oneliners in un colpo solo.

Come disattivare questo comportamento (preferibilmente mantenendo il formato di registro)?

+1

possibile duplicato del [perché devo colpire q alla fine del git log] (http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -at-the-end-of-git-log) – Sgoettschkes

risposta

71

Git ha un'opzione per disattivare il cercapersone:

git --no-pager log --decorate=short --pretty=oneline -n1 

Se le linee tagli cercapersone e si desidera mantenere quel comportamento, tubo per cut ...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS 

... oppure impostare la variabile d'ambiente GIT_PAGER prima che l'invocazione:

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1 
+0

C'è un modo per rendere '--no-pager' l'impostazione predefinita o anche migliore a una scorciatoia per questa opzione quando necessario? Ho pensato di aliasare 'gitnp' in' git --no-pager', ma penso che ci sia una soluzione migliore. –

+1

@IslamAzab, potresti alias 'git' in'/usr/bin/git --no-pager' che disabilita il cercapersone per tutte le tue chiamate git. – mrkmg

+0

@WarrenP 'git' non ha costruito nel cercapersone. Invece, segue la filosofia Unix e usa tutto ciò che hai in '$ PAGER'. 'git' usa sempre' $ PAGER 'invece di farlo solo a caso diversamente da molti altri strumenti scritti male. L'unica magia 'git' è che se' $ LESS' è * non definito *, definirà '$ LESS' per valutare' FRX'. Vedi intorno https://github.com/git/git/blob/master/Documentation/config.txt#L766 per maggiori dettagli. –

0

È PIP E a meno -F nel caso in cui --no-pager non funzioni per te.

git log --decorate --oneline -5 | less -F 
Problemi correlati