Команда git branch ведет себя как "меньше"
когда я использую git branch
команда для перечисления всех ветвей, я вижу вывод git branch | less
.
команда git branch
должен показывать список ветвей, например ls
для файлов.
это выход, который я получаю:
как я получаю поведение по умолчанию git branch
? Что вызывает постраничный вывод?
я использую ZSH с oh_my_zsh
(ничего для Гита там), и мой .gitconfig
похоже, это:
[user]
email = myemail@mail.com
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
4 ответа:
Как упоминалось выше, это было изменение поведения по умолчанию введено в Git 2.16.
вы можете включить постраничный вывод для
git branch
отступить по умолчанию сpager.branch
config параметр:git config --global pager.branch false
не спорить семантика, но поведение вы получаете и по умолчанию. Вот почему вы получаете его, когда не просите чего-то другого. По умолчанию
branch
(и многие другие команды git) используют пейджер при отправке вывода на терминал.вы можете переопределить это значение по умолчанию с помощью
--no-pager
опцииgit --no-pager branch
или если вы перенаправляете вывод в файл, git должен обнаружить, что он не записывает на терминал и поэтому не должен использовать пейджер в любом случае. (С другой стороны, это предполагает сценарий использования сценариев, и в этом случае вы должны рассмотреть возможность использования команды plumbing, такой как
git for-each-ref
вместоgit branch
.)
как указывали другие ответы, git по умолчанию передает себя в пейджер (
less
по умолчанию) для большинства команд.важным моментом, однако, является то, что когда меньше переменная окружения не установлена, ГИТ устанавливает его включении компьютера, и следствием этого является то, что видимое пользователем поведение такое же, как если бы пейджер не использовался, когда вывод команды короткий (т. е. если у вас есть только несколько ветвей). Смотрите человек меньше:
-F или -- выйти-если-один-экран
Вызывает меньше для автоматического выхода, если весь файл может быть отображен на первом экране.- R или -- RAW-CONTROL-CHARS
[...] ANSI" цветные "escape-последовательности выводятся в "сырой" форме.- X или --no-init
Отключает отправку строк инициализации и деинициализации termcap на терминал. Это иногда желательно, если строка деинициализации делает что-то ненужное, например, очищает экран.если вы получите поведение, которое вы описываете, вы, скорее всего,
$LESS
установите что-то еще, и сбросив его, вы избавитесь от проблемы, сохраняя поведение "пейджера" для длительного вывода. Кроме того, вы можете активировать поведение при сохранении$LESS
как есть, добавив это в свой.gitconfig
file:[core] pager = less -FRX
Если вам действительно не нравится пейджер, вы можете отключить его глобально или по команде (см. другие ответы).
https://git-scm.com/book/gr/v2/Git-Internals-Environment-Variables
GIT_PAGER управляет программой, используемой для отображения многостраничного вывода командная строка. Если этот параметр не задан, пейджер будет использоваться в качестве резервного.
чтобы решить вашу проблему, вы можете отключить пейджер и GIT_PAGER в своей оболочке.