I\'m trying to figure out how to easily count the files in my uncommitted index.
I\'ve tried:
git status | grep \'#\' | wc -l
but there
This worked for me:
git status | grep 'modified:' | wc -l
it returns a number
Try git status -s:
git status -s | egrep "^M" | wc -l
M
directly after start-of-line (^
) indicates a staged file. ^ M
, with a space, would be an unstaged but changed file.
This has lots of answers... but the best command imo (it doesn't require any piping and is a pure native git command) is just the following. Note that this counts deleted, modified, and added files:
git diff --cached --shortstat
The output is only one line:
X files changed, Y insertions(+), Z deletions(-)
If no changes have been made, it prints nothing (not even a new empty line).
It's also obvious how to get the same result for unstaged changes (just omit the --cached
flag):
git diff --shortstat
For what it's worth, I prefer:
git diff --stat | tail -n1
Outputs something like:
10 files changed, 74 insertions(+), 123 deletions(-)
For anyone looking for a PowerShell solution:
(git diff --cached --numstat | Measure-Object -Line).Lines
Maybe it was not available 9 years ago, but as of 2019, ls-files
is much faster than diff --stat
:
git ls-files --cached | wc -l