2011-10-12 19 views
39

Birbirine ait birkaç tane depolarım var ve bunların üzerinden basit bir işlem/bash dosyası. Sıklıkla, hangi durumda olduklarını hızlı bir şekilde görmek için bir günlük komutu ile onları döngü. Bu, bir şey hariç, güzel çalışır: İletim iletisinin karakter sayısından daha uzunsa konsolum geniş (veya birden çok satırı vardır), git çizgiyi gösterir, sonra (END) ile bir satırsonu ve devam etmek için q tuşlarına basmam gerekir (tahminim daha fazla veya bunun gibi bir şey). Örnek: Ben sadece tek seferde tüm bu oneliners görmek istiyorum oysa q zaman birkaç basın zorunda olduğuGit günlüğü nasıl devam etmek istemez?

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

Bu oldukça zahmetli bir iştir.

Bu davranışı nasıl devre dışı bırakabilirim (tercihen bu günlük biçimini korurken)?

+1

olası yinelenen http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -at-the-end-of-git-log) – Sgoettschkes

cevap

71

Git çağrı cihazı devre dışı bırakmak için bir seçenek vardır: Çağrı cihazı keser hatları ise

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

ve cut bu davranış, ya boruyu korumak istiyorsanız ...

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

... Sen pip

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

Gereksinim duyulduğunda bu seçenek için '--no-pager' öntanımlı veya daha iyi bir kısayol yapmak için bir yol var mı? "Gitnp" yi "git --no-pager" ile eşleştirmeyi düşündüm, ama bence daha iyi bir çözüm var. –

+1

@IslamAzab, 'git' -'/usr/bin/git --no-pager' gibi diğer tüm çağrılarınız için çağrı cihazını devre dışı bırakabilir. – mrkmg

+0

@WarrenP 'git' çağrı cihazı içinde yerleşik değil. Bunun yerine, Unix felsefesini takip eder ve 'PAGER' içinde sahip olduğunuz her şeyi kullanır. 'git', yalnızca diğer kötü yazılmış araçlardan sadece rastlantısal olarak farklı yapmak yerine, her zaman' $ PAGER' kullanır. Tek sihir 'git',' $ LESS' * tanımlanmamışsa *, 'FRX 'değerini' $ LESS 'olarak tanımlayacaktır. Daha fazla bilgi için https://github.com/git/git/blob/master/Documentation/config.txt#L766 adresini inceleyin. –

0

: ya çağırma önce ortam değişkeni GIT_PAGER set -no-pager sizin için işe yaramazsa daha az -F e.

git log --decorate --oneline -5 | less -F 
([neden git log sonunda q vurmak zorunda] arasında
İlgili konular