tags:

views:

152

answers:

2

After I called git add <file> the command git status will show me something like:

...
new file:    <file>

Somehow I can't manage it to get the same information by using ls-files, it (ls-files -tc in this case) will show me:

H <commited file>
H <other commited file>
H <file>

There seems no commandline switch to exist for new files. The file is reported as cached, which is ok, but how do I find out that it is not commited at this time?

Is this possible with ls-files or some similar command (where I do not have to parse a lot of output like in the case of git status)?

+1  A: 

Clarification: This is a way to show the files that I intend to add. This is not what the OP was looking for, but I'll leave this post in case it's useful to others.

This seems to show only the files that I have added [to my working copy, not the index] but aren't matched by my standard ignore patterns:

 $ git ls-files --others --exclude-standard

Without --exclude-standard, it also shows files that are ignored when I run git status.

MikeSep
A problem is a file that matches a rule in the `.gitignore` file and was added with `git add -f` ... it will not be shown with `--exclude-standard`. I am wondering where `git status` gets its informations from
tanascius
Wait, I might have messed this up -- do you want the files you still need to add, or are you looking for newly added files that are already in the index?
MikeSep
I am looking for added files that are in the index but not commited yet
tanascius
Ah, then I think Andrew's answer is the better one. Will edit mine to clarify this.
MikeSep
Ok, thanks nevertheless
tanascius
+4  A: 

You want to use git diff --cached. With --name-only it'll list all the files you've changed in the index relative to HEAD. With --name-status you can get the status symbol too, with --diff-filter you can specify which set of files you want to show ('A' for newly added files, for instance). Use -M to turn on move detection and -C for copy detection if you want them.

For the strictest reading of what you wrote, git diff --cached --name-only --diff-filter=A will list all the files you've added since HEAD which don't exist in HEAD.

Andrew Aylett
Thanks, that is what I was looking for. This is a very good answer which includes even all the options I need ^^
tanascius
FYI: Your "strictest reading" didn't include the `--cached` flag.
The Doctor What
Thanks for the pointer -- fixed now :).
Andrew Aylett