2017-03-01 6 views
3

ステータスDM、およびAのファイルが異なる色になるように、git diff --name-statusのbash出力をスタイルしたいと思います。`git diff --name-status`のファイルステータスによるbash出力に色を追加する方法は?

一般的なgit bashをスタイルするには、.gitconfigcolorオプションを使用します。

# .gitconfig 
[color] 
    branch = auto 
    diff = auto 
    status = auto 
[color "branch"] 
    current = yellow reverse 
    local = yellow 
    remote = green 
[color "diff"] 
    meta = yellow bold 
    frag = magenta bold 
    old = red bold 
    new = green bold 
[color "status"] 
    added = yellow 
    changed = green 
    untracked = cyan 

私は以下のように別名で--pretty=formatを使用することができますgit logのようなコマンドの出力をスタイルに:

# .gitconfig 
[alias] 
    log = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' 

はしかし、私はgit diff --name-statusため--pretty=formatを使用して成功していません。ステータスタイプによって出力git diff --name-statusのスタイルを設定する方法はあり

$ git diff <branch> --name-status 
M  .gitignore 
M  README.md 
A  diagnostic.js 
D  diagnostic.md 

:私はスタイルしたい

出力は、現在、スタイルとのように見えるされていませんか?あなたが本当にあなたの人生に色が必要な場合は

+1

あなたのgitの設定に応じて色付けされますが、それは' gitの状況によく似ています - 色が内蔵された「ショート」。それがあなたのトリックですか? –

答えて

0

これはうまくいくかもしれない:

# pick your colours 
Red='\033[0;31m'; Colour_Off='\033[0m'; Cyan='\033[0;36m'; 

# find another branch (you could enter <branch>) 
BRANCH=$(git br|grep -v '*'); 

# take the output of git diff and pain the first column red and the reset cyan. 
git diff $BRANCH --name-status|awk "{print \"$Red\" \$1 \"\t\" \"$Cyan\" \$2 \"$Colour_Off\"}" 

あなたは私はあなたが色付けすることができますかわからないのbashで、このためのエイリアスまたはpaint.sh

0

を作成することができます完全にあなたは色が変化を要約してファイル名をしたい場合は、--statsフラグはを含め、多くのコマンドに渡すことができます。しかし--pretty=format:...

で、その出力を再現せず--name-statusの出力10およびgit log --stat

ファイル名を示しています。ファイル名は、+++--という接尾辞が付いています。

$ git diff master --stat            
lib/thing.go  | 5 +++-- 
lib/thing_test.go | 23 +++++++++++++++++++++++ 
2 files changed, 28 insertions(+), 2 deletion(-) 

+ sおよび- sは、私は `gitのdiffを--name-status`フラグを越えたことがない