Is it possible to have git status
only show the modified files due, in my case, to having too many staged files?
-
1How do you have a scroll limit? By default, `git status` will invoke the pager. – Lily Ballard Apr 04 '12 at 20:16
-
Sorry scrollback limit is set to 512 lines on my machine. I guess i could change it; but would prefer a one line command to view just modified files in the status because GD/imagecache will generate even more files eventually. – chrisjlee Apr 04 '12 at 20:20
-
1Right... my point is the pager doesn't use your terminal's scrollback. – Lily Ballard Apr 04 '12 at 20:26
-
Anything wrong with just grepping for whatever you find interesting? Use `--short` or `--porcelain` to get one-line versions of the status. – torek Apr 04 '12 at 20:26
-
2One more point, based on the suggestion to use `git ls-files -m`: which modification(s) do you care about, staged, unstaged, or both? – torek Apr 04 '12 at 20:36
18 Answers
You can't do this with git status
, but you could use git ls-files -m
to show all modified files.

- 182,031
- 33
- 381
- 347
-
7Just so others know, this will only show files which have been modified without yet being staged. – Gerry Apr 15 '15 at 10:19
-
21While this is the accepted answer, it has inaccurate information. You can "'git status' only modified files" with `git status | grep modified` just as user23186 indicates in their answer. – K. Alan Bates Jan 18 '16 at 17:00
-
@K.AlanBates My answer is correct. Your command is not running `git status` only on modified files, it's running `git status` on everything and then using a separate tool to throw away the unwanted info. Your answer also won't work if the user has the git config setting to always use short mode. A more accurate suggestion would have been `git status -s | grep '^.M'`, but even that is just a poor way of accomplishing the same thing as `git ls-files -m`. – Lily Ballard Jan 18 '16 at 19:02
-
To be more specific, the mention of 'inaccurate information' is only to your first clause declaring that "you can't do this with `git status`." You totally can have git status return only modified files with grep. Of course your suggestion to use `ls-files -m` will function just fine; its just not as expressive, in my opinion. – K. Alan Bates Jan 18 '16 at 19:53
-
11For me, `git ls-files -m` is not showing anything but `git status | grep modified` is working. – Sandeepan Nath May 05 '16 at 11:41
-
-
2As others have pointed out, this only shows unstaged files. If you want to show both unstaged AND staged files, this is the best answer I've seen: https://stackoverflow.com/a/39994894/452587 – thdoan Jan 18 '19 at 21:15
-
2@thdoan There are a number of options for showing staged files, though this particular question seems to want to explicitly exclude staged files. `git diff --name-only --diff-filter=M HEAD` would show just modified files for both staged and unstaged, though you should check the docs on `--diff-filter` to see what other filter types you might want to add. – Lily Ballard Jan 19 '19 at 22:15
-
1For better or worse, this solution will only show modified files in your current directory or its subdirectories. In other words, if you're in a subdirectory, it will not show you the modified files in your parent directory. IMO this is a drawback but I guess it's fine as long as you're aware of this fact. I suspect this is the explanation for Sandeepan Nath's comment and its numerous upvotes. I am surprised this hasn't been pointed out in 8 years. – ibonyun Sep 16 '20 at 23:47
It looks like git status -uno
will show you only files that git is tracking, without showing anything else in the directory. Not exactly what you asked for, but perhaps accomplishes the same thing (getting a readable-length list of files that git tracks).

- 2,610
- 5
- 28
- 36

- 1,005
- 7
- 9
-
1`git status -u no` does not show (1) tracked files which are modified, nor (2) tracked files which are staged. I've verified this with git versions 1.8.5.2 and 1.9.4. – mxxk Sep 12 '14 at 20:59
-
5@TomNysetvold, you may actually mean `git status -uno` (http://stackoverflow.com/questions/7008546/command-git-status-u-no-filters-tracked-files-also) – mxxk Sep 12 '14 at 21:03
For modified files:
git status | grep modified:

- 499
- 5
- 6
-
1So useful I've created an alias for this: `git config --global alias.modified '!git status | grep modified:'` – Richard Parnaby-King Jan 12 '16 at 11:23
-
It's better to use `git status -uno`. If you prefer more terse output, then use `git status -s -uno` or `git status -suno`. Note: It's **_VERY IMPORTANT_** not to use a space between the `-u` option and its argument, `no`. – Mr. Lance E Sloan Jun 01 '23 at 13:35
git diff --name-only --diff-filter=M

- 1,047
- 2
- 12
- 28
-
4I recommend those filters: `git diff --cached --name-only --diff-filter=ACMR` which does Added, Copied, Modified and Renamed files. – qwertzguy Jan 30 '18 at 01:17
I was looking for the same info and found following gives modified files:
git status -uno

- 1,354
- 2
- 17
- 36
To list the modified files use:
git ls-files -m
If you want just the basename (no path) then you can pipe each result to the basename command using xargs, line by line:
git ls-files -m | xargs -L 1 basename

- 71
- 2
- 5
-
Clever use of the xargs for ditching the path. That's got applications extending WAY beyond this particular use-case. Thanks a bunch! – NerdyDeeds Sep 25 '22 at 21:38
The problem is i have too many staged files that i don't want to commit or gitignore at the moment and i can't scroll up.
While this may not directly answer the question of listing only modified files, it may help limit the number of files that are listed.
You can pass a path to git status
to limit the output to a specific folder in the repo.
For example:
git status app
git status spec
git status src/components

- 879
- 11
- 17
Update
open the .gitconfig
[user]
name = ...
email = ...
[alias]
# add below code
mySt = "!f() {\
inputType=${1:-" "};\
git status -s | grep "\\ $inputType" |\
sed -e 's/ / /' ;\
}; f"
explain: https://stackoverflow.com/a/62772985/9935654
usage
git mySt M
: show modified:
git mySt M *.md
: Show all *.md, which was modified.
git mySt D
: deleted:
git mySt
: same as thegit status -s
OS: windows
The following command will display all lines containing "modified:", "renamed:" or "new file:"
git status | findstr "modified: renamed: new file:"
If you want to specified file type: (for example *.py
*.ini
)
git status *.py *.ini | findstr "modified: renamed: new file:"
If you think it’s too much trouble typing so much:
create a batch file (for example:
st.bat
)write contents as following:
@echo off :: st.bat (this line doesn't necessarily. ( just let you know the scripts name.)) git status %~1 | findstr "modified: renamed: new file:"
add environment path which contains your batch file. (
st.bat
)usage
st.bat "*.py *.ini"
(note: if type > 1 then must add the semicolon)
OS: LINUX
as @Lance says you can try
git status | grep modified:

- 6,105
- 2
- 37
- 45
I use this command :
$ git status -sb -uno | grep -v "^\sD\s"
And the output looks like this :
## master...origin/master
M GNUmakefile
M include/mp4v2/project.h

- 4,037
- 29
- 39
-
-
-
@kritzel_sw I just modified my command to not display the deleted files. – SebMa Oct 17 '21 at 21:26
To list all modified files use:
git show --stat --oneline HEAD

- 356,069
- 52
- 309
- 320

- 61
- 1
- 3
One alternative is to have the results on a single line via -s
which can limit what is being shown.
git status -s
Shown under windows Terminal with Powerline/Posh git.
This command is so handy in that I added it as an alias used as git stati
[alias]
stati = !git status -s

- 29,542
- 12
- 100
- 122
I use git cola
. Its a simple and elegant UI client that will show you the modified files and provide you with a diff like shot of the changes you made.
git cola
provides you with a GUI where you can visualize which files you modified, which you staged, and even those you don't track. Your question was to use git status only I believe, but I thought git cola can help when that and other things as well. Check this web page from more info: git-cola.github.com/screenshots.html
-
2Could you provide how that relates to my answer given i'm not familiar with this git cola. e.g. screenshots, or more detail? – chrisjlee Apr 05 '12 at 03:10
-
it that why is was downvoted? :) Anyway, git cola provides you with a GUI where you can visualize which files you modified, which you staged, and even those you don't track. Your question was to use git status only I believe, but I thought git cola can help when that and other things as well. Check this web page from more info: http://git-cola.github.com/screenshots.html – n_x_l Apr 05 '12 at 15:07
-
All great answers; just FEI, "git checkout " (switching to or in the same branch) appears to show only modified files.

- 925
- 8
- 10
All the answers are great but Git has evolved and now provides an out-of-the-box solution for getting just the name of changed files(includes untracked)
git status --short
If you need a script-friendly output, use the recommended --porcelain flag
git status --short --porcelain

- 808
- 10
- 19