2016-04-15 8 views
0

変更された(ファイルが追加、削除、または変更された)現在の作業ディレクトリのディレクトリ名だけを出力するコマンドがあるかどうかを知りたいと思います。Git - 前回のコミットで変更されたディレクトリだけを印刷するには?

git diff --name-only HEAD~1..HEADを使用しようとしましたが、変更されたファイルが印刷されます。ですから、これはディレクトリを取得するためにそれを含めることになりますdirname。これを行う他の簡単な方法は?前もって感謝します。

答えて

1

あなたはこのような何かを行うことができます。

git diff --name-only HEAD~10..HEAD -z | xargs -0 dirname | sort | uniq 

-zオプションは、堅牢な方法でNUL-文字に分割するxargs -0を可能NULで区切られた出力、を要求します。 xargs dirnameは、各エントリにコマンドdirnameを適用し、sort | uniqは重複を削除します。

+0

ありがとうございました。できます!私はupvotedしたが、私はまだ評判を持っていない! :) –

+0

私は上記の文の出力からいくつかの内容を削除します: 'git diff --name-only HEAD〜1..HEAD -z | xargs -0 dirname |並べ替え|ユニーク| sed '/ something/d' しかし、これはもっとコードを書くほど大きくなることがあります。関数をパイプに渡す方法はありますか?たとえば 'git diff --name-only HEAD〜1..HEAD -z | xargs -0 dirname |並べ替え|ユニーク| delete_somethingS'ここで 'delete_something'はsed delete文であらかじめ宣言しておく関数です。 –

+0

これは別の質問になっています(Gitではなくシェルの質問)。基本的にはforループが必要ですが、必要に応じて別の質問を開きます。 –

関連する問題