Чому менше бігати без зайвих зусиль?


22

Коли я запускаю git branch(з bash або csh), він автоматично передає висновок через less. Однак, маючи лише декілька гілок у сховищі, це поза зайвим, це дратує, оскільки перелік гілок зникає, як тільки я припиняю менше.

Перевірка ~/.gitconfigфайлу та локальних .git/configфайлів не знаходить нічого про пейджер чи інше, що могло б викликати це. Інакше нічого, що я знайшов у веб-пошуку, не було б корисним чи перспективним.

Чому це відбувається, і що (якщо що-небудь) я можу зробити, щоб lessзапустити запуск (якщо це робиться, git logколи багато історії), але не інакше (як, наприклад, git branchлише 2 або 3 гілки)?


4
Загалом git не знає, скільки буде виводу з будь-якої команди, тому він надсилає все за замовчуванням через пейджер, який, ймовірно, буде менше.
ікар

6
Перше, що потрібно зробити при новій установці -nix - це поставити export LESS=-Xв .profile. Це утримує менше від "очищення" екрана. Я ненавиджу, що стандартне налаштування очищає екран, тому що мені часто потрібно вирізати та вставити речі або використовувати його як орієнтир.
Пітер - Відновіть Моніку

3
@Peter Щоб бути зрозумілим (каламбур не призначений), це повинні робити лише люди, які не хочуть поведінки очищення екрана.
David Z

@icarus: Це здається логічним. Однак поведінка моєї змінилася останнім часом. Я не впевнений, чому - ймовірно, зміна якоїсь змінної середовища, яка вимушена з боку корпоративних служб безпеки "на високому рівні", які, здається, не хвилюються, наскільки важко вони роблять роботу всіх інших. У будь-якому випадку, git раптом перейшов від того, що я вважав розумним поведінкою, до запуску однорядних виходів через менше таким чином, що вихід втрачався, коли я менше зупинявся.
GreenMatt

Якщо поведінка нещодавно змінилася, принаймні можливо, що до файлів запуску оболонки загальної системи, наприклад / etc / profile, /etc/profile.d/*, /etc/bash.bashrc, було додано налаштування змінної LESS, Чи є ця змінна у вашому оточенні?
ікар

Відповіді:


35

Ви можете встановити наступне:

git config --global core.pager 'less -FRX'

Це забезпечить, що lessбуде

  • Вийдіть, якщо весь файл можна відобразити на першому екрані ( F)
  • Виведіть необроблені символи керування для термінального форматування ( R)
  • Подрібніть довгі рядки ( S)
  • Не надсилайте рядки init / de-init до терміналу - це дозволяє уникнути очищення екрана при виході ( X)

Редагувати: Видалено Sпараметр на основі коментаря Пітера А. Шейдера


7
і пропустіть, --globalякщо ви хочете, щоб він застосовувався лише до поточного сховища.
mosvy

8
Установка змінної оточення LESSдо -FR, додаючи в X і S до смаку ще один спосіб.
ікар


11
Швидше за все, ОП вважає, що поведінка дратує в цілому; Я припускаю, що можна встановити змінну середовища, export PAGER='less -FRSX'і git би її шанував (відсутня конкретна конфігурація git). Btw, -Sнебезпечний тим, що мовчки відкидає вихід.
Пітер - Відновіть Моніку

4

Тут є кілька чудових відповідей щодо налаштування lessповедінки, але оскільки мої сірі бороди звикли набирати текст, |moreколи я цього хочу, і оскільки я все ще більше в курсі меркуріальної, ніж з git, я захоплююсь

git config --global core.pager cat

3
Сторінка man для сторінки git-configконстатує, що значення core.pagerмає бути інтерпретоване оболонкою. Коли ви встановите його no, він намагається виконати команду no, яка, швидше за все, не існує, тоді вона відпадає від простого виведення вмісту. Ви все одно побачите повідомлення про помилку в голові. Що ви, мабуть, хочете зробити, це встановити його catзамість цього.
QIS

1
Це хороший шматок інформації, але то , що мені подобається, що він не виконує нічого . Це catмарно, і я не особливо довіряю підтримці утилітів Linux util, щоб не змінювати те, що робить кішка (пор . lsКотируються файли, які перебувають у роботі ). Можливо, замість цього я повинен використовувати "ніколи". Менш вірогідна така програма.
dgc

7
Установка core.pagerв порожній рядок ( git config core.pager '') або catбуде НЕ взагалі нічого працювати. Ви можете це зробити самостійно, якщо ви мені не повірите ;-) Немає жодної причини встановлювати це на макетну команду, як no.
mosvy

Щиро дякую! Я не знав, що порожня рядок не призведе до виконання команди. Щодо того cat, ви хочете сказати, що git має спеціальний випадок для цього рядка в коді пейджера - тобто catце фактично синонім "null"? Я б очікував, що це виконає cat.
dgc

Це, мабуть, так і є. Накладки. Але також добре: я завжди шукаю більше способів виправдати свою неприємність до git.
dgc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.