Marco [off-list ref] writes:
I'm new to git and a bit confused about how some commands work.
git add . -- Adds everything *but* deleted files
git add -A -- Adds everything
git commit -a -m "whatever" -- Commits everything *but* new files
I don't understand why there's not switch (is there?) for commit to commit new
and deleted files, like -A for git add?
Historical accident. In the early days of git, there was no .gitignore
mechanism, so a mode that operates on everything under the working tree
was almost always an undesired thing to have (think *.o files).
Then .gitignore mechanism came, and "add ." has become usable. But
"commit -a" has been widely used way before that.
If you look at "commit -a" within that context, you would understand why
it should only look at the paths git knows about.
Of course, "add -A" is a much later invention. The option was named "-A"
with capital letter, even though there is no "add -a".
This was because I knew we would eventually want to have "commit -A" that
grabs everything and new files (honoring the gitignore mechanism), and
aimed for consistency between "add -A" that I was adding, and "commit -A"
that was yet to be written. See 3ba1f11 (git-add --all: add all files,
2008-07-19).
I think it now is sensible to add "commit -A" if somebody is inclined to
do so. Nobody felt the need for it strongly enough to do so, it seems.
On 2011-02-24 Junio C Hamano [off-list ref] wrote:
quoted
I don't understand why there's not switch (is there?) for commit to
commit new and deleted files, like -A for git add?
Historical accident. In the early days of git, there was no .gitignore
mechanism, so a mode that operates on everything under the working tree
was almost always an undesired thing to have (think *.o files).
Then .gitignore mechanism came, and "add ." has become usable. But
"commit -a" has been widely used way before that.
If you look at "commit -a" within that context, you would understand why
it should only look at the paths git knows about.
Of course, "add -A" is a much later invention. The option was named "-A"
with capital letter, even though there is no "add -a".
This was because I knew we would eventually want to have "commit -A" that
grabs everything and new files (honoring the gitignore mechanism), and
aimed for consistency between "add -A" that I was adding, and "commit -A"
that was yet to be written. See 3ba1f11 (git-add --all: add all files,
2008-07-19).
I think it now is sensible to add "commit -A" if somebody is inclined to
do so. Nobody felt the need for it strongly enough to do so, it seems.
Thank you for the detailed explanation.
To sum this up: -A would be a nice-to-have feature but it's not necessary to
implement since we have add -A. But if I'm willing to implement it myself I'm
free to do that.
Regards
Marco
Marco venit, vidit, dixit 24.02.2011 19:45:
On 2011-02-24 Junio C Hamano [off-list ref] wrote:
quoted
quoted
I don't understand why there's not switch (is there?) for commit to
commit new and deleted files, like -A for git add?
Historical accident. In the early days of git, there was no .gitignore
mechanism, so a mode that operates on everything under the working tree
was almost always an undesired thing to have (think *.o files).
Then .gitignore mechanism came, and "add ." has become usable. But
"commit -a" has been widely used way before that.
If you look at "commit -a" within that context, you would understand why
it should only look at the paths git knows about.
Of course, "add -A" is a much later invention. The option was named "-A"
with capital letter, even though there is no "add -a".
This was because I knew we would eventually want to have "commit -A" that
grabs everything and new files (honoring the gitignore mechanism), and
aimed for consistency between "add -A" that I was adding, and "commit -A"
that was yet to be written. See 3ba1f11 (git-add --all: add all files,
2008-07-19).
I think it now is sensible to add "commit -A" if somebody is inclined to
do so. Nobody felt the need for it strongly enough to do so, it seems.
Thank you for the detailed explanation.
To sum this up: -A would be a nice-to-have feature but it's not necessary to
implement since we have add -A. But if I'm willing to implement it myself I'm
free to do that.
Marco, please don't cull cc on this list. I haven't been aware of this
new subthread nor your answer in the other one (being culled).
Your questions have been answered in the subthread with Jeff already,
and we've laid out a way forward for the implementation.
Michael