All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miles Bader <miles@gnu.org>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Mark Burton <markb@ordern.com>,
	Francis Galiegue <fge@one2team.com>,
	git@vger.kernel.org
Subject: Re: Git commit won't add an untracked file given on the command line
Date: Thu, 20 Nov 2008 14:06:56 +0900	[thread overview]
Message-ID: <buowsez56kv.fsf@dhapc248.dev.necel.com> (raw)
In-Reply-To: <alpine.DEB.1.00.0811191036340.30769@pacific.mpi-cbg.de> (Johannes Schindelin's message of "Wed, 19 Nov 2008 10:41:44 +0100 (CET)")

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>> I use the staging area a lot, so I think I have a pretty clear idea of 
>> what it's "about", but I also often use "commit FILE" or "commit -a" for 
>> simple cases; even when splitting a change into multiple commits, it's 
>> often more convenient to do "commit FILE..." instead of "add FILE; 
>> commit".
>
> What I meant was this: the "commit <file>" paradigm is not what you should 
> do most of the time.  In order to work with the staging area efficiently, 
> you should make staging and committing two separate steps.
>
> So my point is this: stage first, verify, then commit.  That saves you a 
> lot of embarrassment.

You seem to be saying that you think that using staging area explicitly
is necessary or somehow "more efficient" for making good commits, but on
the face of it, that's simply not true.

I'm extremely careful about committing clean changes, and do a lot of
testing and pre-commit diffing.  For complex changes which need to be
split, the staging area is indeed a very useful tool, and I'm very glad
git has it -- but it's hardly necessary for _all_ commits, and my
experience is that in practice, many commits are indeed the simple sort
which for which it's superfluous.  My goal is not to "work with the
staging area efficiently", it's to "make good/clean/tested commits,
efficiently".

Obviously this depends on work style, and subject matter.  Sometimes one
_needs_ to make biggish changes and split them for commiting, and some
people like to use that work style even when it's not strictly
necessary.  Other times, changes are more obviously independent, and can
be done, tested, and commited in a serial fashion without any splitting.

Perhaps, given your work style or the type of work you, you use the
staging area 99% of the time.  For your case, maybe any git features
which bypass the staging area are simply unneeded complexity.  However,
my own experience suggests that this is not universally true.  I'd say I
use the staging area for maybe 50% of commits.

One of the nice thing about git is the way that it tries to cater to
multiple work styles, so it seems wrong to reject a useful feature
simply because you want to "encourage" people to use your preferred work
style, when that work style is not obviously better.  [Of course there
can be other good reasons to reject this feature -- maybe it's too
dangerous or mucks up the code.]

> I regularly encounter people who never call "git diff --cached" before 
> committing, and guess who introduces all kinds of debug statements and 
> other cruft into their commits?  Exactly.

[I'm not sure what the point of that was... for the record, no I'm not
one of "those people".  When I use the staging area, I use "git diff
--cached"; when I don't use the staging area, I "git diff" instead...]

-Miles

-- 
Bacchus, n. A convenient deity invented by the ancients as an excuse for
getting drunk.

  reply	other threads:[~2008-11-20  5:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-18 21:12 Git commit won't add an untracked file given on the command line Mark Burton
2008-11-18 21:27 ` Francis Galiegue
2008-11-18 21:47   ` Mark Burton
2008-11-19  1:07     ` Johannes Schindelin
2008-11-19  1:21       ` Miles Bader
2008-11-19  1:39         ` Johannes Schindelin
2008-11-19  3:43           ` Miles Bader
2008-11-19  9:41             ` Johannes Schindelin
2008-11-20  5:06               ` Miles Bader [this message]
2008-11-19  1:51       ` Junio C Hamano
2008-11-19  9:54       ` Mark Burton
2008-11-19 11:27         ` Johannes Schindelin
2008-11-19 13:22           ` Junio C Hamano
2008-11-19 14:41             ` Mark Burton
2008-11-19 18:01             ` Daniel Barkalow
2008-11-19 23:07               ` Junio C Hamano
2008-11-19 23:30                 ` Mark Burton
2008-11-19 23:51                   ` Junio C Hamano
2008-11-19 23:52                 ` Daniel Barkalow
2008-11-20  0:36                   ` Junio C Hamano
2008-11-20 10:18         ` David Aguilar
2008-11-18 22:16   ` Matthieu Moy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=buowsez56kv.fsf@dhapc248.dev.necel.com \
    --to=miles@gnu.org \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=fge@one2team.com \
    --cc=git@vger.kernel.org \
    --cc=markb@ordern.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.