ChatGPT解决这个技术问题 Extra ChatGPT

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?

How do you have a scroll limit? By default, git status will invoke the pager.
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.
Right... my point is the pager doesn't use your terminal's scrollback.
Anything wrong with just grepping for whatever you find interesting? Use --short or --porcelain to get one-line versions of the status.
One more point, based on the suggestion to use git ls-files -m: which modification(s) do you care about, staged, unstaged, or both?

L
Lily Ballard

You can't do this with git status, but you could use git ls-files -m to show all modified files.


Just so others know, this will only show files which have been modified without yet being staged.
While 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.
For me, git ls-files -m is not showing anything but git status | grep modified is working.
As 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: stackoverflow.com/a/39994894/452587
@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.
K
Kamal Reddy

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


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.
@TomNysetvold, you may actually mean git status -uno (stackoverflow.com/questions/7008546/…)
L
Lance

For modified files:

git status | grep modified:

So useful I've created an alias for this: git config --global alias.modified '!git status | grep modified:'
C
Carl Bäckström
git status -s | awk '{if ($1 == "M") print $2}'

Or awk '$1 == "M" { print $2 }'
Z
ZeroGraviti

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


I recommend those filters: git diff --cached --name-only --diff-filter=ACMR which does Added, Copied, Modified and Renamed files.
m
mpelzsherman

git diff --name-only works too.


K
Karthik

You can use

$ git status -uno 

to list only modified files.


T
Tectrendz

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

git status -uno

git status -uno --porcelain adds nice output for parsing script
b
briggySmalls

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

B
BillFienberg

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

S
SebMa

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

But that prints the deleted ones as well.
I add \M git status -uno -sb | grep M\
@kritzel_sw I just modified my command to not display the deleted files.
C
Carson

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:

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:


Ω
ΩmegaMan

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

git status -s

https://i.stack.imgur.com/hy0jq.png

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

c
chrisjlee

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


Could you provide how that relates to my answer given i'm not familiar with this git cola. e.g. screenshots, or more detail?
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: git-cola.github.com/screenshots.html
How to change cola's interface language?
C
CertainPerformance

To list all modified files use:

git show --stat --oneline HEAD

g
galaxis

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


P
Pang

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

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