'git diff' からディレクトリを除外する 質問する

'git diff' からディレクトリを除外する 質問する

Git diff からディレクトリ全体 (この場合は/spec ) を除外するにはどうすればよいですか?

コマンドを使用してソフトウェアリリース全体の差分を作成しています。ただし、 specgit diffフォルダへの変更はこの手順には関係がなく、頭痛の種になるだけです。これで、

git diff previous_release..current_release app/

これにより、 appディレクトリ内のすべての変更の diff が作成されますが、たとえばlib/ディレクトリ内の変更の diff は作成されません。このタスクをどのように実行できますか?

明確にしておきたいのは、 /specを除くすべてのディレクトリのパラメータを末尾に文字列として追加できることはわかっているということです。コマンドで 1 つのディレクトリを完全に除外する方法があることを期待していました。

ベストアンサー1

に基づくこの答え、以下も使用できます:

git diff previous_release..current_release -- . ':!spec'

これは、特定のパスを除外できる新しい Git 機能です。さまざまなシェルのワンライナーよりも信頼性が高いはずです。

この質問は依然として「git diff exclude path」のヒット数第 1 位であるため、ここに投稿します。

Git 2.13 (2017 年第 2 四半期) 以降では、!を に置き換えることができます^。後者は引用符を必要としません。したがって、次のように記述できます。

git diff previous_release..current_release -- . :^spec

おすすめ記事