2013-06-13 33 views
47

默认git diff打印所有+-行到标准输出但是我有一个(devian)机器(我通过ssh连接)其中git diff带我到一个编辑器(我不知道这是哪个),我需要按q继续。如何让git diff写入标准输出?

我已经检查混帐配置,它看起来像:

$ 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会将其差异输出(通常是任何可能超过屏幕效果的输出)发送到系统的pager,这是一次只能打印一个屏幕输出的实用程序。如果你想,当你运行一个命令关闭寻呼机,传递--no-pager到Git的方法:

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

这可以运行任何Git命令运行。

如果你想用默认禁用它的差异仅,您可以通过运行DIFF寻呼机设置为cat

$ git config pager.diff false 

如果你想用默认禁用它的所有命令,您可以通过运行Git的寻呼机设置为cat

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

不知道寻呼机。 'git config --global core.pager猫'做到了!谢谢:)在OSX上的 – nacho4d

+1

:“error:invalid option:--no-pager” – aaronbauman

+4

@aaronbauman:你把它传递给'git'(_not_子命令)吗? – mipadi

9

core.pager值使用less,打印到stdout,并且还具有寻呼机功能(如果需要的话),从而使上下滚动和(不像cat):

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

它立即退出如果diff第一屏幕(-F),输出上适合原始控制字符(-R),排长行而不是换行(-S),并且不使用termcap init/deinit字符串(-X)。

这是在Ubuntu 15.04上测试的。

5

如果您不关心颜色,您也可以简单地使用cat来执行任何git命令。

因此git diff | cat您的情况。

+3

如果你真的关心颜色,请执行'git diff --color |猫'(: – xjcl