Kiedy używam git branch
polecenia do wyświetlenia wszystkich gałęzi, widzę wynik działania git branch | less
.
Polecenie git branch
powinno wyświetlać listę rozgałęzień, podobnie jak ls
robi to dla plików.
To jest wynik, który otrzymuję:
Jak uzyskać domyślne zachowanie git branch
? Co powoduje wydruk stronicowany?
Używam ZSH z oh_my_zsh
(nic dla Git tam), a moje .gitconfig
wygląda następująco:
[user]
email = [email protected]
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
git branch
z czymś innym. Korzystając z detekcji potoku , Git wyświetli listę rozgałęzień na standardowe wyjście w poleceniachgit branch > branches.txt
lubgit branch | wc -l
.ESC/q
po prostymgit branch
sprawdzeniu.less
, możesz dodać--no-init --quit-if-one-screen
doLESS
zmiennej środowiskowej, co spowoduje, żeless
po prostu napisz na standardowe wyjście, jeśli tekst można wyświetlić bez przewijania. Zobaczman less
po więcej szczegółów.[pager] branch = false
(w dwóch wierszach).Jak zauważyły inne odpowiedzi,
less
dla większości poleceń Git domyślnie instaluje się w pagerach ( domyślnie).Ważną kwestią jest jednak to, że gdy zmienna środowiskowa LESS nie jest ustawiona, Git ustawia ją na FRX , a konsekwencją jest to, że widoczne dla użytkownika zachowanie jest takie samo, jakby pager nie był używany, gdy wynik polecenia był krótki (tj. jeśli masz tylko kilka oddziałów). Zobacz człowieka mniej :
Jeśli dostaniesz opisywane zachowanie, najprawdopodobniej wybrałeś
$LESS
coś innego, a rozbrojenie go (unset LESS
) pozbyłoby się problemu, zachowując zachowanie „pager” dla długich wyników. Alternatywnie możesz aktywować zachowanie dla zachowania bez zmian,$LESS
dodając to do.gitconfig
pliku:Jeśli naprawdę nie lubisz pagerów, możesz je dezaktywować globalnie lub na polecenie (zobacz inne odpowiedzi).
źródło
Nie kłóć się z semantyką, ale zachowanie, które dostajesz, jest domyślne. Dlatego dostajesz to, kiedy nie prosisz o coś innego. Domyślnie
branch
(i wiele innych poleceń Git) używa pager podczas wysyłania danych wyjściowych do terminala.Możesz zastąpić to ustawienie domyślne, używając
--no-pager
opcji:Lub jeśli przekierujesz dane wyjściowe do pliku, Git powinien wykryć, że nie zapisuje do terminala, a więc i tak nie powinien używać pagera. (Z drugiej strony sugeruje to przypadek użycia skryptu, w którym to przypadku należy rozważyć użycie polecenia hydraulicznego, tak jak
git for-each-ref
przedgit branch
.)źródło
git --no-pager branch
Pracuje. Ale jak to się dzieje? TylkoPAGER
zmienna środowiskowa jest ustawiona naless
. To nie jest zachowanie domyślne. Wszystkie moje uczelnie mają dane wyjściowe w postaci listy wydrukowanej na terminalu.To zachowanie Gita również było dla mnie coraz bardziej irytujące. Mam listę znaczników,
less
gdy chcę na przykład wyświetlić listę znaczników.Można kontrolować to zachowanie, zmieniając domyślny GIT PAGER na
cat
zamiastless
. Wolę przewijać w iTerm niż w edytorze. Lubię korzystać z edytora, kiedy chcę.Więc:
źródło
git log
denerwuje mnie to. Po prostu tęsknię za pierwotnym zachowaniem, ale nie miałem czasu na poprawę mojego codziennego przepływu pracy w tej perspektywie.git log
...Dla tych, którzy chcą zaktualizować,
~/.gitconfig
aby to naprawić, wyglądałoby to tak:źródło
Ponieważ Git domyślnie otwiera wyjście w pager (przynajmniej w Ubuntu). Odpowiedź akceptowana będzie całkowicie zastąpić pager, który nie lubić , jeśli wyjście jest bardzo długa.
Poleciłbym zastąpienie pagera
less
, aby nie „przewijał” wyników mniejszych niż wysokość terminala.źródło
Wykonaj następujące czynności:
źródło
Przyjęta odpowiedź wydaje się błędna. Istnieją dwa problemy:
git branch
nie będzie zawsze korzystał z pagera, co nie będzie pożądane przy dużej wydajności.Prawdziwym powodem jest to, że bash i zsh mają różne domyślne definicje dotyczące LESS: bash nic nie definiuje, podczas gdy zsh to definiuje
-R
. Kiedy robięunset LESS
w Zsh, wszystko wraca do normy ...-R
Problem może nadal pożądany. W takim przypadku możesz dodać następującą instrukcję do pliku .zshrc, aby wszystko działało:-F
„powoduje, że less automatycznie kończy pracę, jeśli cały plik można wyświetlić na pierwszym ekranie”. Należy jednak-X
podać jednocześnie, w przeciwnym razie dane wyjściowe nie będą wyświetlane, gdy wynik będzie mniejszy niż wynik.źródło
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Aby rozwiązać problem, możesz wyłączyć PAGER i GIT_PAGER w swojej powłoce.
źródło
PAGER
(GIT_PAGER
był wyłączony) problem jest nadal. Czy jest jakieś miejsce, w którym muszę sprawdzić to środowisko env?PAGER= git branch
(z jedną spacją za znakiem i bez znaku równości dokładnie tak, jak napisano). Nie mam pojęcia, czy jest to lepsze niż npgit branch | cat
.Miałem ten sam problem
git status
i też gogit config --global pager.status false
rozwiązuję.źródło