2013-06-13 2 views
47

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

Я шашка мерзавец конфигурации, и это выглядит как:

$ 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 

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

+0

Возможный дубликат [Как предотвратить git diff от использования пейджера?] (Http://stackoverflow.com/questions/2183900/how-do-i-prevent-git-diff-from-using-a- пейджер) –

ответ

87

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

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

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

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

$ git config pager.diff false 

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

$ git config --global core.pager cat 
+0

Не знал про пейджер. 'git config - global core.pager cat' сделал это !. Спасибо :) – nacho4d

+1

на OSX: «error: недействительный вариант: --no-pager» – aaronbauman

+4

@aaronbauman: Вы передали его в 'git' (_not_ подкоманду)? – mipadi

9

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

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

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

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

5

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

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

+3

И если вы заботитесь о цветах, сделайте 'git diff --color | cat' (: – xjcl

Смежные вопросы