Trying to adapt the answers from Want to exclude file from "git diff" for the
git diff `git status -s |grep -v ^\ D |grep -v file/to/exclude.txt |cut -b4-`
$ git --version
git version 2.6.1.windows.1
The exclude pathspec trick, described in Making 'git log' ignore changes for certain paths, works here:
git diff --status -- . ':(exclude)file/to/exclude.txt'
or, if you are in a subdirectory:
git diff --status -- :/ ':(exclude,top)file/to/exclude.txt'
The latter can be spelled in various ways. For instance, this also works:
git diff --status ':(top)' :!/file/to/exclude.txt
git diff --status :/: :!/:file/to/exclude.txt
These are described in the
gitglossary documentation under the "pathspec" section. Note that the exclude feature is new in Git version 1.9 (and slightly broken until 1.9.2). The leading
/ is an alias for
top and the
! is an alias for
exclude, with the long forms requiring the parentheses. The trailing colon before the actual pathname is optional when using the single-character aliases but forbidden when using the parentheses (this rule trips me up every time—I keep wanting to use
:(exclude):... rather than
:(exclude)...). The single quotes around the
(exclude) pathspec components above are to protect the parentheses from being interpreted by the (Unix/Linux) shells; the Windows shell may have different ideas about which characters need protection.