Команда Git branch ведет себя как 'less'

Когда я использую команду git branch для вывода списка всех ветвей, я вижу вывод git branch | less git branch | less

Команда git branch должна показывать список ветвей, как ls делает для файлов.

Это вывод, который я получаю:

Enter image description here

Как получить поведение по умолчанию для git branch? Что вызывает постраничный вывод?

Я использую oh_my_zsh с oh_my_zsh (там нет ничего для Git), и мой .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
+225
19 янв. '18 в 13:11
источник поделиться
8 ответов

Как упоминалось выше, это было изменение поведения по умолчанию, введенное в Git 2.16.

Вы можете отключить постраничный вывод для git branch по умолчанию с помощью pager.branch конфигурации pager.branch:

git config --global pager.branch false
+420
21 янв. '18 в 18:30
источник

Связанные вопросы


Похожие вопросы

Как указывалось в других ответах, для git по умолчанию git по умолчанию подключается к пейджеру (по умолчанию less).

Важным моментом, однако, является то, что когда переменная окружения LESS не установлена, Git устанавливает ее в FRX, и следствием этого является то, что видимое пользователю поведение такое же, как если бы пейджер не использовался, когда вывод команды короткий (т.е. если у вас только несколько веток). Смотри мужик меньше

-F или --quit-if-one-screen
Вызывает автоматическое завершение меньше, если весь файл может отображаться на первом экране.

-R или - -R AW-CONTROL-CHARS
[...] Выходные последовательности "цвета" ANSI выводятся в "сыром" виде.

-X или --no-init
Отключает отправку строк инициализации и деинициализации termcap на терминал. Это иногда желательно, если строка деинициализации делает что-то ненужное, например, очистку экрана.

Если вы получите описанное вами поведение, вам, скорее всего, будет присвоено значение $LESS для чего-то другого, и его сброс позволит избавиться от проблемы, сохраняя при этом поведение "пейджер" для длительного вывода. Кроме того, вы можете активировать поведение, сохраняя $LESS как есть, добавив это в ваш файл .gitconfig:

[core]
    pager = less -FRX

Если вам действительно не нравится пейджер, вы можете деактивировать его глобально или для каждой команды (см. Другие ответы).

+28
16 апр. '18 в 16:32
источник

Не аргументировать семантику, но поведение, которое вы получаете, является значением по умолчанию. Вот почему вы получаете его, когда не просите что-то другое. По умолчанию branch (и множество других команд git) используют пейджер при отправке вывода на терминал.

Вы можете переопределить это значение по умолчанию, используя опцию --no-pager

git --no-pager branch

Или, если вы перенаправляете вывод в файл, git должен обнаружить, что он не пишет на терминал, и поэтому не должен использовать пейджер в любом случае. (С другой стороны, это предполагает использование сценария, и в этом случае вам следует использовать команду сантехника, например git for-each-ref, в качестве git branch.)

+19
19 янв. '18 в 13:33
источник

это мерзкое поведение было все более и более раздражающим для меня тоже. Я получил мой список тегов less когда просто хочу перечислить теги, например.

Можно также контролировать это поведение, изменив Git PAGER по умолчанию на cat вместо less. Я бы лучше прокрутил в iTerm, чем в редакторе. Мне нравится использовать редактор, когда я хочу.

Так:

git config --global core.pager cat

Я надеюсь, что это помогает.

+10
14 янв. '19 в 10:44
источник

Для тех, кто хочет обновить их ~/.gitconfig чтобы исправить это, это будет выглядеть так:

[pager]
   branch = false
+6
31 окт. '18 в 21:12
источник

Команда Git branch ведет себя как 'less'

Поскольку git по умолчанию открывает вывод в пейджере (по крайней мере, в Ubuntu) Принятый ответ полностью заменит пейджер, который вам может не понравиться, если ваш вывод очень длинный.

Я бы порекомендовал заменить пейджер на less чтобы он не "прокручивал" выходные данные меньше, чем высота терминала.

git config --global --replace-all core.pager "less -F -X"

+4
28 мар. '19 в 11:00
источник

https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables

GIT_PAGER управляет программой, используемой для отображения многостраничного вывода в командной строке. Если это не установлено, PAGER будет использоваться как запасной вариант.

Чтобы решить вашу проблему, вы можете отключить PAGER и GIT_PAGER в вашей оболочке.

0
19 янв. '18 в 13:13
источник

Сделайте следующее:

[alias]
  br = !git --no-pager branch
-1
10 янв. '19 в 11:47
источник

Посмотрите другие вопросы по меткам или Задайте вопрос