Mam kilka repozytoriów git, które należą do siebie, i prosty plik wsadowy / bash do zapętlenia nad nimi. Często zapętlam je za pomocą polecenia dziennika, aby szybko zobaczyć, w jakim są stanie. Działa to ładnie, z wyjątkiem jednej rzeczy: jeśli komunikat o zmianach jest dłuższy niż liczba znaków, moja konsola jest szeroka (lub ma wiele linii), git pokazuje linię, a następnie znak nowej linii z (END) i muszę nacisnąć q, aby kontynuować (myślę, że przepuszcza wyjście przez więcej lub coś w tym rodzaju). Przykład:
> 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 raczej niewygodne, ponieważ muszę kilka razy nacisnąć q , podczas gdy chciałbym zobaczyć wszystkie te onelinery za jednym zamachem.
Jak mogę wyłączyć to zachowanie (najlepiej zachowując ten format dziennika)?
Odpowiedzi:
Git ma opcję wyłączenia pagera:
Jeśli twój pager tnie linie i chcesz zachować to zachowanie, użyj potoku do
cut
...... lub ustaw zmienną środowiskową
GIT_PAGER
przed wywołaniem:źródło
--no-pager
potrzeby ustawić domyślny lub nawet lepszy skrót dla tej opcji? Myślałem o aliasingugitnp
dogit --no-pager
, ale myślę, że jest lepsze rozwiązanie.git
do/usr/bin/git --no-pager
którego będzie wyłączyć pager dla wszystkich git połączeń.git
nie ma wbudowanego pagera. Zamiast tego, jest zgodny z filozofią Uniksa i używa wszystkiego, co masz$PAGER
.git
po prostu zawsze używa$PAGER
zamiast robić to tylko przypadkowo, w przeciwieństwie do wielu innych źle napisanych narzędzi. Jedyną magiągit
jest to, że jeśli nie$LESS
zostanie zdefiniowane , zdefiniuje$LESS
wartośćFRX
. Więcej informacji można znaleźć pod adresem github.com/git/git/blob/master/Documentation/config.txt#L766 .git
po prostu zapewnia nadpisanieGIT_PAGER
, które pozwoli ci zdefiniować niestandardową wartość, która będzie używana zamiastPAGER
zawsze, gdy git wymaga stronicowania.Inne rozwiązanie problemu trwałego wyłączania pagera, szczególnie podczas korzystania z
log
podkomendy:tylko dla aktualnego repozytorium:
git config pager.log false
dla twojej instalacji git (czyli wszystkich repozytoriów na twoim komputerze):
git config --global pager.log false
Jak można się domyślić, to samo działa, jeśli pager ma być włączony lub wyłączony selektywnie dla niektórych innych podkomend.
E. g. for
branch
(która wyświetla gałęzie) będzie to komendagit config pager.branch false
Proponowane rozwiązanie jest prawdopodobnie bardziej eleganckie w porównaniu do
za
git --no-pager
każdym razem, gdy uruchamiasz określone polecenie.Ponieważ, całkiem możliwe, nie chcesz tego wpisywać za każdym razem.
określanie
git --no-pager
jako alias dlagit
Ponieważ, całkiem możliwe, chcesz uniknąć niejawnej konfiguracji globalnej LUB chcesz, aby w niektórych przypadkach pager był włączony.
polegać na niektórych zmiennych środowiskowych, takich jak
PAGER
lubGIT_PAGER
.Aby to zrobić, musisz upewnić się, że są one ustawione w bieżącej sesji terminala. A jeśli chcesz, aby były one automatycznie ustawiane na jakąś niestandardową wartość za każdym razem, gdy tworzony jest nowy terminal, musisz zmienić jeden z plików ładowanych z powłoki, takich jak np
~/.bashrc
. To nie jest duży problem. Ale te pliki bootstrap są często zmieniane przez inne aplikacje i zawierają wiele innych rzeczy, nie tylko tych używanych przez Git. Więc teoretycznie lepiej jest określić ustawienia związane z gitem za pomocągit config
, niż umieszczać je np~/.bashrc
.Alternatywne rozwiązanie dla wyłączenie
pager
dla wszystkich podpoleceń jest określeniecat
jak git narzędzie wykorzysta stronicowania:git config core.pager cat
LUBgit config --global core.pager cat
Moją odpowiedzią jest nieco przeformułowanie poniższego:
"zapobiec używaniu pagera przez git diff?"
https://stackoverflow.com/a/6986231/6103242
Przywołuje się w celu wskazania innej istotnej dyskusji.
źródło
Wyłącz pager dla wszystkich poleceń:
źródło
Przekierowujesz go do less -F, na wypadek gdyby opcja --no-pager nie zadziałała.
źródło