web-dev-qa-db-ja.com

git diff-長い行を処理しますか?

ファイルで git-diff を実行していますが、変更は長い行の最後にあります。

カーソルキーを使用して右に移動すると、色分けが失われ、行が整列しないため、変更の追跡が難しくなります。

その問題を防ぐ方法はありますか、それとも単に行を折り返すだけですか?

(mingw32経由でgit 1.5.5を実行)

225
Peter Boughton

git diffの出力の表示は、使用しているページャーによって処理されます。

通常、Linuxでは、lessが使用されます。

GIT_PAGER環境変数を設定することにより、gitに別のページャーを使用するように指示できます。ページングを気にしない場合(たとえば、端末でスクロールバックできる場合)、GIT_PAGERを明示的に空に設定してページャーを使用して停止することができます。 Linuxの場合:

$ GIT_PAGER='' git diff

ページャーがなければ、行は折り返されます。

ターミナルがカラー出力をサポートしていない場合は、--no-color引数を使用するか、git構成ファイルのカラーセクションにエントリを入力して、これをオフにすることもできます。

$ GIT_PAGER='' git diff --no-color
113
SpoonMeiser

または、デフォルトのページャーとしてlessを使用する場合は、単に-S diffを表示しているときに、lessでラッピングを再度有効にします。

224
someone45

git configを使用して、ポケットベルをラップするように設定することもできます。

$ git config core.pager 'less -r' 

現在のプロジェクトのページャー設定を設定します。

$ git config --global core.pager 'less -r' 

すべてのプロジェクトのページャーをグローバルに設定します

113
Shoan

Josh Diehl in a comment to this answer への完全なクレジットで、それにもかかわらず、これはそれ自体に対する答えであると思うので、それを追加する:

長い行の違いを確認する1つの方法は、Word指向の差分を使用することです。これは次の方法で実行できます。

git diff --Word-diff

この場合、大幅に異なるdiff出力が得られ、行内で何が変更されたかを具体的に示します。

たとえば、次のようなものを取得する代わりに:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line

次のようなものが表示される場合があります。

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line

または、これの代わりに色付けを使用します:

result of just <code>git diff</code>

あなたはこれを得るかもしれません:

result of <code>git diff --Word-diff</code>

さて、あなたが本当に長い行を比較しているのであれば、あなたが最初に説明したページャーの状況にまだ問題があるかもしれません。しかし、これが新しいツールを提供し、行の変更点をより簡単に特定できることを願っています。

41
lindes

Lessをページャーとして使用し、行の折り返しを永続的にするには、単にfold-long-linesオプションを有効にします。

git config --global core.pager 'less -+S'

これにより、lessを使用しているときに入力する必要がなくなります。

乾杯

29

これをグーグルで検索しました。 GIT_PAGER='less -r'私のために働く

19
singingfish

Mac OSX:someone45の '-S'以外の答えはありませんが、実行されているものはほとんどありません。ワードラップを永続化するには、次のことが必要でした。

git config --global core.pager 'less -+$LESS -FRX'
18
John Lemberger

Git 1.5.3以降( Sep 2007

--no-pagerオプションが利用可能になりました。

git --no-pager diff

git diffがページャーを使用しないようにするにはどうすればよいですか?

V2.1以降、ラップがデフォルトです

Git v2.1リリースノート

10
Steven Penny

8年後、 https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-withから優れた答えを見つけました-git-diff

git config core.pager `fold -w 80 | less`

ここで、最初にgit diffをfoldにパイプし、次にlessにパイプします:ラップされ、ページの高さが少なくなり、構文が強調表示されます。

5
Thomson Comer

単にgit diffの出力をmoreにパイプすることができます:

git diff | more
3
AnonTidbits

「git diff」を使用しており、複数のページが表示されている場合(ページの最後に「:」が表示されます)、この場合は「-S」と入力してEnterキーを押します(Sは大文字である必要があります)。長い行の折り畳みを切り替えます。

3
Amin

完全な解決策ではありませんが、gitkgit-guiは、この情報とスクロールバーの両方を表示できます。

3
Peter Boughton

これまで誰もこれを指摘しなかった。覚えておくのは非常に簡単で、git configで追加の設定を行う必要はありません

git diff --color | less -R
2
infoclogged

現在の/デフォルトの設定をリストします:

  $ git config --global core.pager  
    less -FXRS -x2

次に-Sを更新して、次のように省略します。

  $ git config --global core.pager 'less -FXR -x2'

-S:画面の幅より長い行を折り畳むのではなく、切り刻みます。

1
user5870226