'is it possible to `git status` only modified files?

Is it possible to have git status only show the modified files due, in my case, to having too many staged files?



Solution 1:[1]

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).

Solution 2:[2]

For modified files:

git status | grep modified:

Solution 3:[3]

git status -s | awk '{if ($1 == "M") print $2}'

Solution 4:[4]

git diff --name-only --diff-filter=M

Solution 5:[5]

git diff --name-only works too.

Solution 6:[6]

You can use

$ git status -uno 

to list only modified files.

Solution 7:[7]

I was looking for the same info and found following gives modified files:

git status -uno

Solution 8:[8]

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

Solution 9:[9]

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

Solution 10:[10]

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

Solution 11:[11]

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 the git 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:

  1. create a batch file (for example: st.bat)

  2. 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:"
    
  3. add environment path which contains your batch file. (st.bat)

  4. 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:

Solution 12:[12]

One alternative is to have the results on a single line via -s which can limit what is being shown.

git status -s

Image of 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

Solution 13:[13]

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

Solution 14:[14]

To list all modified files use:

git show --stat --oneline HEAD

Solution 15:[15]

All great answers; just FEI, "git checkout " (switching to or in the same branch) appears to show only modified files.

Solution 16:[16]

If you want to list the modified files, you could do this:

git log -n1 --oneline --name-status | grep '^M'