2016-10-08 45 views
4

--statフラグの回答を適応させようとすると、accepted answer(ドライバを作成)はunix(この意味であれば/ bin/trueにリダイレクト)私は一時的にファイル(またはむしろいくつかのファイル)のdiffを無効にするスイッチを探していますが、それは永久にファイルの種類に割り当てられます。git diff --stat特定のファイルを除外する

スクリプトsolution

git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-` 

は、実際にgitの状態を呼び出し、その出力を編集 - 私がしたいことは(簡単な)を計算しながら、いくつかのファイルを無視すること自体デフのgitに指示することですが(ちょうどライン--statかわった)。私はgit-diffドキュメントに行ったが、そのようなオプションは見つけられないようだ。誰も私に手を差し伸べる?

$ git --version 
git version 2.6.1.windows.1 

答えて

13

Making 'git log' ignore changes for certain pathsで説明除外PATHSPECトリックは、ここに動作します:

git diff --status -- . ':(exclude)file/to/exclude.txt' 

か、あなたがサブディレクトリにある場合:

git diff --status -- :/ ':(exclude,top)file/to/exclude.txt' 

後者はさまざまな方法で綴らすることができます。例えば、これも動作します:

git diff --status ':(top)' :!/file/to/exclude.txt 

ないよう:

git diff --status :/: :!/:file/to/exclude.txt 

は、これらは "PATHSPEC" セクションの下the gitglossary documentationで説明されています。除外機能はGitバージョン1.9では新しく(1.9.2までは少し壊れていた)ことに注意してください。先頭の/topのエイリアスであり、!excludeのエイリアスであり、ロングフォームはかっこが必要です。 1文字のエイリアスを使用する場合は、実際のパス名の前のコロン(後ろのコロン)は省略可能ですが、かっこを使用するときには禁じられています(このルールは毎回私を引き上げます)。:(exclude)...ではなく:(exclude):...上記の(top)(exclude) pathspecコンポーネントに関する一重引用符は、(Unix/Linux)シェルによってかっこが解釈されないように保護することです。 Windowsシェルには、保護が必要な文字について異なるアイデアがある場合があります。

+0

あなたは私のgitの英雄です! 'git diff -stat 307-first-commit - :/ ':(除外、git diff -stat 307)は、git bashシェルで動作します(mitwinのmethinksに基づいてmsysgitに付属しているバニラシェルだけでなく、 top)Mopy/Docs '' :(除外、上)Mopy/bash/images''で、307-first-commitはタグです。これは: 'git diff -stat 307-first-commit:/::!/ Mopy/Docs'は出力しません(" bash:!/ Mopy/Docs:event not found "を表示します)。この 'git diff -stat 307-first-commit:/::!/:Mopy/Docs'も" bash:!/:イベントが見つかりません "と失敗します –

+2

bashが食べようとしているためそれ自身の目的のために '!'一重引用符やプレフィックスのバックスラッシュ(二重引用符ではない)はシェルから '!'を保護します。一般的に、シェルは引用符(他の文字を保護する)、アスタリスク、疑問符、山括弧、大括弧などを括弧で囲むのが好きであり、中括弧で囲まれたシェルもあります。一重引用符は、一重引用符を除くすべてを引用する「最も強力な」引用符です。二重引用符は「最も強力ではありませんが、一重引用符を引用できます。だから ''!?<'" '"は4文字を通します! – torek

関連する問題