git diffをstdoutに書き込む方法は?


93

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

私はgitconfigをチェックしましたが、次のようになります。

$ 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

足りないところはありますか?たぶん、私のマシンに何かが欠けているので、未知のツールはフォールバックか何かですか?どんな助けでも大歓迎です。ありがとう。


回答:


166

デフォルトでは、Gitはdiff出力(および通常は画面一杯以上の出力)をシステムのページャーに送信します。これは、一度に1画面一杯の出力のみを出力するユーティリティです。コマンドの実行時にページャーを無効にする場合は、--no-pagerGitに渡します。

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

これは、任意のGitコマンドに対して実行できます。

diffに対してのみデフォルト無効にしたい場合は、以下をcat実行してdiffページャーを設定できます。

$ git config pager.diff false

すべてのコマンドでデフォルト無効にする場合は、次のコマンドを実行してGitページャーを設定できますcat

$ git config --global core.pager cat

ポケットベルについて知りませんでした。git config --global core.pager catそれをやった!。ありがとう:)
nacho4d 2013年

4
@aaronbauman:あなたはそれを渡しましたgitないサブコマンド)?
mipadi 2015年

「git--no-pagerdiff」は「gitdiff--no-pager」とは異なります。明確化していただきありがとうございます
aaronbauman 2015年

1
同じことがgit branch、たとえばgit config pager.branch false
dinjas 2018年

30

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

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

差分が最初の画面に収まるとすぐに終了し(-F)、生の制御文字を出力し(-R)、-S折り返すのではなく長い行を切り刻み()、termcapのinit / deinit文字列を使用しません(-X)。


1
ありがとう..私はインターネット全体でこのオプションを探していました:)
obai 2018年

この1は私が欲しいものである
user3595632

20

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

だからgit diff | catあなたの場合のために。

編集: あなたが色の使用を気にするならコメントで指摘されているように:

git diff --color | cat


9
また、色が気になる場合は、次のようにしてくださいgit diff --color | cat(:
xjcl 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.