How do I list just the files that would be committed?

后端 未结 4 1336
闹比i
闹比i 2021-02-01 15:33

Is there any way to get a list of files that will be committed when I type the following?

git commit -m \"my changes\"

git status lists too muc

相关标签:
4条回答
  • 2021-02-01 15:41

    This command will tell you what files in your index/cache/staging area differ from the current HEAD (and whether they are additions, modifications or deletions) which is the changes which will be committed if you use git commit without explicit paths or the -a option. It's format is reasonably similar to the svn status output which you show.

    git diff --cached --name-status
    
    0 讨论(0)
  • 2021-02-01 15:42

    You can try:

    git diff --name-status
    

    I get the following:

    $ git diff --name-status
    M       README.markdown
    

    Without the untracked files.

    0 讨论(0)
  • 2021-02-01 15:46

    This is what I was looking for. Thanks to notnoop for the lead I needed. I wanted to post back my solution in case it helps others.

    git diff HEAD  --name-only
    

    Since I intended to do

    git commit -s -F mesage.txt
    

    with the files found in the first line.

    My intent is to create a little system that totally ignores the index i.e. that I never need to do git add. (From what I understand, the index is useful when creating patches, which isn't by no means the norm in my workflow.)

    0 讨论(0)
  • 2021-02-01 15:48

    I know OP original asked to avoid git status, but I felt this would be nice to leave for posterity (i.e other people who don't share OP's reservations).

    git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//'
    

    My reasoning is that git status --porcelain seems like it was built for exactly this type of quandary...

    source: http://git-scm.com/docs/git-status.html

    EDIT: You may chose to not use sed -e 's/[A-Z] *//' if you wish to keep git's modification tags in front of each file name.

    0 讨论(0)
提交回复
热议问题