2011-10-12 2 views
39

J'ai un couple de dépôts git qui appartiennent ensemble, et un simple fichier batch/bash pour faire une boucle sur eux. Je les boucle souvent avec une commande log pour voir rapidement dans quel état ils se trouvent. Cela fonctionne bien, sauf pour une chose: si le message commit est plus long que le nombre de caractères de ma console est large (ou a plusieurs lignes), montre la ligne, puis un retour à la ligne avec (END) et je dois appuyer sur q pour continuer (je suppose que cela conduit la sortie par plus ou quelque chose comme ça). Exemple:Comment faire git log pas invite à continuer?

> 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) 

Ce qui est assez peu pratique que je dois appuyer sur q quelques temps, alors que je voudrais simplement voir tous les en une seule Citations. Comment puis-je désactiver ce comportement (de préférence tout en conservant ce format de journal)?

Comment?

+1

double possible de [pourquoi dois-je frapper q à la fin du journal git] (http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -at-the-end-of-git-log) – Sgoettschkes

Répondre

71

Git a une option pour désactiver le téléavertisseur:

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

Si vos coupes de téléavertisseur lignes et que vous voulez conserver ce comportement, que ce soit à tuyau cut ...

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

... ou définir la variable d'environnement GIT_PAGER avant l'invocation:

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

Existe-t-il un moyen de rendre '--no-pager' le défaut ou mieux encore un raccourci pour cette option si nécessaire? Je pensais à aliasing 'gitnp' à' git --no-pager', mais je pense qu'il existe une meilleure solution. –

+1

@IslamAzab, vous pourriez alias 'git' à'/usr/bin/git --no-pager' qui désactiverait le pager pour tous vos appels git. – mrkmg

+0

@WarrenP 'git' n'a pas de pager intégré. Au lieu de cela, il suit la philosophie Unix et utilise tout ce que vous avez dans $ PAGER. 'git' utilise simplement' $ PAGER' au lieu de le faire aléatoirement contrairement à beaucoup d'autres outils mal écrits. Le seul 'git' magique est que si $ LESS n'est pas défini, il définira $ LESS à value FRX. Voir autour de https://github.com/git/git/blob/master/Documentation/config.txt#L766 pour plus de détails. –

0

Vous pip e-à moins -F au cas où -no-pager ne fonctionne pas pour vous.

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