Подтвердить что ты не робот

Как сделать git diff write to stdout?

По умолчанию git diff выводит все строки +- на stdout, но у меня есть (devian) машина (которую я подключаю через ssh), где git diff приводит меня к редактору (который я не знаю,), и мне нужно нажать q, чтобы продолжить.

У меня есть checker git config, и он выглядит так:

$ git config --list
user.name=XXX
[email protected]
color.ui=false
difftool.prompt=false
mergetool.prompt=false
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=XXX
branch.master.remote=origin
branch.master.merge=refs/heads/master
$ git config --global --list
user.name=XXX
[email protected]
color.ui=false
difftool.prompt=false
mergetool.prompt=false
$ git config --system --list
'/etc/gitconfig': No such file or directory

Есть ли место, которое мне не хватает? Может быть, неизвестный инструмент - резерв или что-то, потому что у меня на машине что-то отсутствует? Любая помощь приветствуется. Спасибо.

4b9b3361

Ответ 1

По умолчанию Git отправляет свой выходной сигнал diff (и вообще любой вывод, который может быть более чем экранным) на системный пейджер, который является утилитой, которая печатает только один экранный вывод за раз. Если вы хотите отключить пейджер при выполнении команды, перейдите --no-pager в Git:

$ git --no-pager <subcommand> <options>

Это может быть запущено для любой команды Git.

Если вы хотите отключить его по умолчанию только для diff, вы можете установить пейджер diff на cat, выполнив:

$ git config pager.diff false

Если вы хотите отключить его по умолчанию для всех команд, вы можете установить пейджер Git на cat, выполнив:

$ git config --global core.pager cat

Ответ 2

В следующем значении core.pager используется less, который печатает на stdout, а также имеет функции пейджера (если требуется), позволяя прокручивать вверх и вниз (в отличие от cat):

$ git config --global core.pager "less -FRSX"

Он немедленно завершает работу, если diff соответствует первому экрану (-F), выводит необработанные управляющие символы (-R), прерывает длинные строки, а не обертывает (-S), и не использует termcap init/deinit строки (-X).

Это было протестировано на Ubuntu 15.04.

Ответ 3

Вы также можете просто использовать cat для любой команды git, если вам не нужны цвета.

Итак git diff | cat для вашего случая.