如何使git diff写入标准输出?

默认情况下, git diff所有的+-行输出到stdout,但是我有一个(devian)机器(通过ssh连接),其中git diff将我引导到一个编辑器(我不知道这是哪个),我需要按继续。

我checker gitconfiguration,它看起来像:

 $ git config --list user.name=XXX user.email=XXX@XXX 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 user.email=XXX@XXX color.ui=false difftool.prompt=false mergetool.prompt=false $ git config --system --list '/etc/gitconfig': No such file or directory 

有没有我失踪的地方? 也许未知的工具是一个后备或东西,因为我的机器是缺less的东西? 任何帮助表示赞赏。 谢谢。

默认情况下,Git将它的差异输出(通常是任何可能比屏幕更多的输出)发送到系统的寻呼机 ,该寻呼机是一次只能打印一个屏幕输出的实用程序。 如果要在运行命令时禁用寻呼机,请将--no-pager传递给Git:

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

这可以运行任何Git命令。

如果您希望仅在diff中禁用它,则可以通过运行以下命令将diff pager设置为cat

 $ git config pager.diff false 

如果你想在默认情况下禁用所有的命令 ,你可以通过运行以下命令来设置Git分页器为cat

 $ git config --global core.pager cat 

下面的core.pager值使用less ,打印到标准输出,并具有传呼function(如果需要),使滚动上下(不像cat ):

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

它会立即退出,如果差异适合在第一个屏幕( -F ),输出原始控制字符( -R ),排长队而不是包装( -S ),并且不使用termcap init / deinitstring( -X )。

这在Ubuntu 15.04上进行了testing。

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

所以git diff | cat git diff | cat你的情况。