2011-10-12 15 views
39

Mam kilka repozytoriów git, które należą do siebie, i prosty plik wsadowy/bash, aby je zapętlić. Często przeglądam je za pomocą polecenia log, aby szybko sprawdzić, w jakim są stanie. Działa to ładnie, z wyjątkiem jednej rzeczy: jeśli komunikat zatwierdzenia jest dłuższy niż liczba znaków moja konsola jest szeroka (lub ma wiele wierszy), git pokazuje linię, a następnie znak nowej linii z (END) i muszę nacisnąć q, aby kontynuować (domyślam się, że potokuje wyjście przez więcej lub coś w tym stylu). Przykład:Jak sprawić, by log Gita nie był wyświetlany, aby kontynuować?

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

Jest to dość niewygodne, ponieważ muszę nacisnąć q kilka czasu, natomiast Chciałbym tylko, aby zobaczyć wszystkie te oneliners za jednym zamachem.

Jak mogę wyłączyć to zachowanie (najlepiej przy zachowaniu tego formatu dziennika)?

+1

możliwe duplikat [dlaczego mam trafić Q na końcu dziennika git] (http://stackoverflow.com/questions/2364978/why-do-i-have-to-hit-q -at-end-of-git-log) – Sgoettschkes

Odpowiedz

71

Git posiada opcję wyłączenia pager:

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

Jeśli linie cięć pager i chcesz zachować to zachowanie, albo rurę cut ...

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

... lub przed wywołaniem ustaw zmienną środowiskową

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

Czy istnieje sposób, aby w razie potrzeby ustawić '--no-pager' jako domyślny, a nawet lepszy skrót do tej opcji? Myślałem o aliasing 'gitnp' do' git --no-pager', ale myślę, że jest lepsze rozwiązanie. –

+1

@IslamAzab, możesz alias 'git' na'/usr/bin/git --no-pager', który wyłącza pager dla wszystkich twoich wywołań git. – mrkmg

+0

@WarrenP 'git' nie ma wbudowanego pager'a. Zamiast tego podąża za filozofią Unix i używa wszystkiego, co masz w '$ PAGER'. 'git' po prostu zawsze używa' $ PAGER' zamiast robić to tylko losowo, w przeciwieństwie do wielu innych źle napisanych narzędzi. Jedynym magicznym 'git' jest to, że jeśli' $ LESS' jest * nie zdefiniowane *, to zdefiniuje '$ LESS', aby wartość' FRX'. Więcej informacji można znaleźć na stronie https://github.com/git/git/blob/master/Documentation/config.txt#L766. –

0

You pip e to do mniej -F w przypadku, gdy -no-pager nie działa dla ciebie.

git log --decorate --oneline -5 | less -F 
Powiązane problemy