web-dev-qa-db-ja.com

git diffで標準出力に書き込むにはどうすればよいですか?

デフォルトではgit diffすべてを印刷+-行を標準出力に接続しますが、(sshを介して接続する)(devian)マシンがあります。ここでgit diffエディターに移動します(どちらかはわかりません)を押す必要があります q 続ける。

Git configをチェッカーしましたが、次のようになります。

$ 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

行方不明の場所はありますか?私のマシンに何かが欠けているため、未知のツールはフォールバックか何かでしょうか?どんな助けも大歓迎です。ありがとう。

66
nacho4d

デフォルトでは、Gitはそのdiff出力(および通常は1画面以上の出力)をシステムのpagerに送信します。これは、一度に1画面分の出力のみを印刷するユーティリティです。コマンドの実行時にポケットベルを無効にするには、--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
126
mipadi

以下 core.pager値はlessを使用します。これはstdoutに出力され、ページャー機能(必要な場合)も備えており、(catとは異なり)上下にスクロールできます。

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

Diffが最初の画面に収まるとすぐに終了します(-F)、生の制御文字(-R)、ラッピング(-S)、およびtermcap init/deinit文字列(-X)。

20
friederbluemle

色を気にしない場合は、catコマンドにgitを使用することもできます。

そう git diff | catあなたの場合。

編集:色の使用を気にする場合はコメントで指摘されているように:

git diff --color | cat

10
Shasak