2016-11-21 6 views
1

git diffを実行すると、すべてのステージングされていないファイルの現在の変更が取得されます。git diff(最初のファイルのみ)

git diffを最初にリストされたファイル(組み込みフラグを使用)で自動的に実行する簡単な方法はありますか?

私が思い付くした最高のがある:それは私のためにこれを行うだろう上で、私はブラシをかけgit diffフラグがある場合

function git_diff_first_unstaged_file() { 
    if [[ $(git diff --name-only) ]]; then 
     git diff $(git diff --name-only | sed -n '1 p') 
    else 
     echo "gdf: There are currently no unstaged changes." 
    fi 
} 
alias gdf='git_diff_first_unstaged_file' 

私は思ったんだけど。

+1

フラグはありません。あなたの方法は、多かれ少なかれ良いものです: 'git diff -name-only | sed -n 1p'だけを実行し、出力を変数に保存し、次に実行することで、より効率的にすることができます'git diff'は名前がある場合にのみ保存された名前になります)。 – torek

+1

私はちょうど 'git diff $(git diff -name-only | sed -n 1p)'を行うことができると思うが、if文は素晴らしい。関係なく、フラグの可能性について私の正気を確認してくれてありがとう:) – Nico

+0

私は尋ねる必要があります...なぜこれをしたいですか? – Schwern

答えて

1

git diff -name-onlyの横には、git ls-files --modifiedがあります。このファイルには、ステージングされていないファイル(最初に取得するために| sed -1pと一緒に使用される)が表示されます。

あなたが最初のファイルの差分をステージングを開始したい場合、あなたは、単に入力するためのオプションを持っていることを忘れないでください:

git add -p 

あなたが表示され、選択的に第一のための差分を追加することができますがコメントの推奨事項以下のファイル(した後、第2、あなたはインタラクティブなステージングセッションを終了するにはQを入力することができ、その時点で)

+0

うわー!これは素晴らしいです、私はこのインタラクティブなセッションが存在するのか分かりませんでした。ありがとうございました! – Nico

0

、一つがために(プロジェクト設定の)~/.gitconfigに次のエイリアスを追加することができます最初にとの差分を作成するunstagedしかしファイル追跡:

[alias] 
    gdi= "!f() { git diff $(git diff --name-only | sed -n $1p); }; f" 

git gdi 3 unstaged変更の差分が表示されます:あなたはi番目のunstagedしかしファイルが追跡して差分を作りたい場合は

[alias] 
    gdf = "! git diff $(git diff --name-only | sed -n 1p)" 

3番目のファイル(またはファイルが3つ未満の場合は最後のファイル)です。

関連する問題