To use git effectively (and as intended) I make small atomic commits, while I do have longer sessions where I do change not only one thing. Thus, I make heavy use of git add -p
. This doesn't work for completely new files, though, because I tend to forget them later on.
What I want to do is, tell git
that there is a new file, I want it to track, but not stage it:
Example: Running git status
produces:
# On branch my-current-branch
# Your branch is ahead of 'origin/my-current-branch' by 2 commits.
#
# Changes to be committed:
#
<<STAGED SECTION>> // A
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
<<UNSTAGED-YET-KNOWN SECTION>> // B
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
<<UNKNOWN SECTION>> // C
If I have a file foo
in the C section, and I say git add foo
it will go to the A section. If I say git add -N foo
it will go to both A and B. However, that would mean it would be included in the next commit, at least as the fact that there is a new file.
I want it to go in section B exclusively, such that I can later add it to A with git add -p
or git add foo
(or whatever).
Edit
Regarding the add -N
solution, this doesn't work because if I try to commit after having said add -N
and not having added it properly, git complains because it doesn't know how to handle empty files:
foo: not added yet
error: Error building trees