views:

67

answers:

3

Hello,

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 much. I could strip out all the words, but I'd rather not. And I don't want to be told about untracked files.

I've tried

git ls-files -md

but that doesn't show files that have been recently added, but not yet committed.

I'm looking for the same output you'd get from

svn status -q

For example $ svn status -q
A file.py
M dir/database.py
M start.py

+4  A: 

You can try:

git diff --name-status

I get the following:

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

Without the untracked files.

notnoop
Thanks! How did I miss that? I've been over the git commands a couple times.
gene
This isn't correct. The question is, "what will be commited when I say `git commit -m message`". This gives the differences between the work tree and the cache which is closer to what *won't* be committed.
Charles Bailey
+1  A: 

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

gene
A: 

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
Charles Bailey