web-dev-qa-db-ja.com

Git:diffの行から先頭のプラス/マイナスを削除します

私の質問はかなり単純ですが、答えを見つけることができませんでした。

git diffの各行から先頭のプラス/マイナス記号を削除したいのですが。なぜこれを行いたいのかを尋ねる前に、私の理由の概要を説明しましょう。

  1. 正確に80文字の行は1文字でオーバーフローします。
  2. カラーリングは追加/削除を区別するのに十分です
  3. ターミナルのウィンドウ幅を(任意の81文字ではなく)80文字に維持して、ターミナルで行う他のすべてのこととの一貫性を維持したいと思います(gitの外)

これを行うための設定オプションはありますか?そうでない場合、どのようにすれば、diff lessスタイルでページングできるようになりますか?

どんな洞察もいただければ幸いです。

41
caleb531

1つのオプションは、sedを使用して、色を保持しながら、diffから不要な文字を削除することです。

git diff --color | sed -r "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

(先頭のスペースもdiffによって発行されるため、削除する必要があることに注意してください。)

27
nullptr

私が見た単純な方法はこれです..覚えやすい(テキスト形式が変更されるため、コードの変更を知る必要があります)

git diff --color-words



これをデフォルトにする方法は次のとおりです
Linuxを使用している場合は、次のコマンドを〜/ .bashrcファイルに追加します
その後、別のコマンドとしてgitdiffspaceなしで使用できます。

alias gitdiff='git diff --color-words'


更新:
git configを介してエイリアスを直接設定するには(〜/ .bashrcの助けなしで)
https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
@ dylankbに感謝します。

例:コマンドgit config --global alias.ci commit;を入力した場合
その後、git ciを使用して、残りの人生をコミットできます!!

ハッピーギッティング:)

82
smilyface

Macユーザーの場合は、次のコマンドを使用する必要があります。

git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r

caleb531 受け入れられた回答にそれを提供しましたが、小さなタイプミスがありました。

次に、これをエイリアスでスローする場合は、次の操作を実行できます。

alias gitdiff='git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r'

5
Kyle Venn

自分の質問に答えてもいいのであれば、最終的には diff-so-fancy というツールを使用することにしました。 +/-を差分から取り除くだけでなく、ファイルヘッダーを簡素化し、で各行内の変更を強調表示します。

diff-so-fancy

4
caleb531