Git Log ведет себя как меньше

3

git log -{n}, когда -nон достаточно мал, не открывается, lessпросто выводит его на экран. Это желательно. git log -1не должен занимать весь экран.

К сожалению, в bash-оболочке MINGW, после того, как я запустил не-git команду, git logведет себя так, как будто я столкнулся с ней lessи нажал q. (другими словами, данные печатаются в нижней части экрана, и я получаю кучу пробелов сверху).

Воображаемое демо (пожалуйста, прости его длину):

>> clear









>> git log -1




commit 123123...
Author: CPfohl
Date: {today}
    {Message}

>> git log -1
commit 123123...
Author: CPfohl
Date: {today}
    {Message}

Это работает независимо от того, какую команду git я выполняю раньше git log, до тех пор, пока она git log -{n}выполняется после команды git.

Это ошибка, или есть способ заставить это вести себя нормально?

Crisfole
источник

Ответы:

3

Если вы хотите отключить разбиение на страницы для некоторых / всех команд git, вы можете:

  • установить значение конфигурации ( pager.<cmd>или core.pagerдля всех команд) вcat
  • использовать --no-pagerопцию

Но, возможно, я не поняла ваш вопрос. Описанное поведение может быть изменено путем установки соответствующей команды разбивки на страницы ( lessс некоторыми опциями) в вышеупомянутых опциях конфигурации.

Мартин Веймелка
источник
Что если я хочу сделать это только при запуске git log с -nопцией?
Crisfole
Вы можете попытаться добавить псевдоним команды (включая опцию -n) и использовать этот псевдоним pager.alias_name = less .... Но я не знаю, можно ли использовать псевдоним в качестве команды в упомянутой опции конфигурации.
Мартин Веймелка
2
Опция --no-pager работает как шарм! Но похоже, что --no-pager нужно указать перед "log", чтобы он заработал. Вы должны обновить ответ, чтобы уточнить это. «git log ... --no-pager» не работает, в то время как «git --no-pager log ...» работает.
CoolMcGrrr
0

Или вы можете также определить псевдоним в вашем файле конфигурации git, который позволяет вам показывать журнал особым образом, если вы вводите следующие команды, например, вы настраиваете .gitconfig для редактирования с помощью Sublime Text 3:

git config --global core.editor "'c:/Program Files/Sublime Text 3/sublime_text.exe'" -w

git config --global alias.showconfig "config --global -e"

Далее вы можете добавить псевдоним в git, чтобы показать вам последние коммиты по всем веткам в репозитории:

Добавьте [alias], если он отсутствует в .gitconfig, тогда:

latest = "!f() { echo "Latest \"${1:-11}\" commits accross all branches:"; git log  --abbrev-commit --date=relative --branches --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' -n ${1:-11};  } ; f"

Псевдоним здесь использует функцию оболочки с параметром, установленным в переменную оболочки. Если вы не укажете значение параметра, псевдоним будет использовать 11 в качестве значения по умолчанию (Синтаксис можно легко интерпретировать с -11, но синтаксис $ {1: -11} означает первый параметр в оболочке и установку по умолчанию значение для параметра, если оно отсутствует. Немного похоже на значения по умолчанию в C # или параметры по умолчанию в Powershell.

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

Я попробовал это, запустив git latest и git latest 3 на следующем примере экрана вывода. Вы видите мое редактирование моего git config слева.

С помощью функций оболочки и псевдонимов мы можем сделать намного больше с Git без необходимости печатать так много. Синтаксис shell-функций соответствует правилам BASH и может использоваться также в среде Windows с CMD.

введите описание изображения здесь

Торе Аурстад
источник