1. ホーム
  2. ギット

[解決済み】git diffからディレクトリを除外する方法

2022-04-19 06:15:08

質問

Git の diff からディレクトリ全体を除外する方法について教えてください。 (この場合は /spec). 私は git diff コマンドを使ってソフトウェアリリース全体の diff を作成しています。 しかし、spec の変更はこの手順には無関係であり、頭痛の種になるだけです。

git diff previous_release..current_release app/

この場合、appディレクトリのすべての変更に対してdiffが作成されますが、例えばlib/ディレクトリの変更に対してはdiffが作成されません。 どなたか、このタスクを達成する方法をご存知でしょうか? ありがとうございます。

編集:はっきりさせておきたいのですが、私は、すべてのディレクトリのパラメータを、/specを除いた末尾に列挙すればいいことを知っています。 私は、コマンドで単一のディレクトリを本当に除外する方法があることを望んでいました。

どのように解決するのですか?

bashを使用していて、拡張グロビング( shopt -s extglob ) を使えば、シェル側で処理することができます。

git diff previous_release current_release !(spec)

他のものをすべて列挙する手間を省くことができます。

あるいは、シェルにとらわれない。

git diff previous_release current_release --name-only | grep -v '^spec/' \
    | xargs git diff previous_release current_release --

これをワンライナーのシェルスクリプトにまとめると、引数を入力し直す手間が省けます。