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
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
You can try:
git diff --name-status
I get the following:
$ git diff --name-status
M README.markdown
Without the untracked files.
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.)
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.