From: Jonathan Nieder <jrnieder@gmail.com>
To: Thore Husfeldt <thore.husfeldt@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Git terminology: remote, add, track, stage, etc.
Date: Mon, 18 Oct 2010 16:15:22 -0500 [thread overview]
Message-ID: <20101018211522.GA7655@burratino> (raw)
In-Reply-To: <8835ADF9-45E5-4A26-9F7F-A72ECC065BB2@gmail.com>
Hi Thore,
Thore Husfeldt wrote:
> what an annoying learning experience.
>
> I promised myself to try to remember what made it all so hard, and to
> write it down in a comprehensive and possibly even constructive
> fashion.
Thanks for doing this work!
> There probably is a radical case to be made for abandoning the word
> “tracking” entirely. First, because tracking branches don’t track, and
> second because “tracking” already means something else in Git (see
> below).
I think you are overthinking this "tracking like a Basset hound" thing.
When a person keeps a diary to track their appointments, is it always
up to date? No, it is only as up to date as the person is diligent.
Similarly, git provides a namespace for branches that a person can
use to track remote branches, which is only as up to date as one
keeps it.
So what would be a better term?
> In the ideal world, origin/master would be something
> like “the fetching branch” for the origin’s master, or the “snapshot
> branch” or the “fetched branch”.
Familiarity might be leaving me blind, but these all sound even more
confusing to me. In fact, origin/master is not only updated by
fetching but by pushing (at least if I remember correctly). It is
meant to be git's local memory of remote content.
Using the term "remote-tracking" consistently would certainly be an
improvement and would make it easier to do a search-and-destroy (erm,
-and-replace) if another term comes up that seems to fit the concept
better.
> The wonderful and central concept of staging area exists under at
> least three names in Git terminology. And that’s really, really
> annoying. The index, the cache, and the staging area are all the same,
> which is a huge revelation to a newcomer.
Heh. Personally I tend to think in terms of "the index".
e.g., "git add" registers changes for use in the next commit.
Information about the commit in preparation is stored in the
index.
Why? Because "staging area" has this misleading feeling of
not-jargon. It is jargon and when misused can be very confusing
(to me, at least).
> 2. Introduce the alias `git unstage` for `git reset HEAD` in the
> standard distribution.
Doesn't "git reset" ('reset the staged content to match...') fit the
same metaphor?
> 3. Duplicate various occurences of `cached` flags as `staged` (and
> change the documentation and man pages accordingly), so as to have,
> e.g., `git diff --staged`.
Already exists (though in practice it tends to be easier to teach
--cached since that is the option that documents all over the web
use).
> Clean? What’s this now? Clean and dirty are Git slang, and not what I
> want to meet as a new user. The message should inform me that the
> untracked files in the working directory are equal to their previous
> commit.
Huh?
Anyway, improvements welcome (in the form of a simple mockup, or even
better, patches).
> changed but not updated:
>
> I’m still not sure what “update” was ever supposed to mean in this
> sentence.
It's historical residue. (What is now done with "git add" used to be
done with "git update-index").
> Untracked files:
> (use "git add <file>..." to include in what will be committed)
>
> should be
>
> Untracked files:
> (use "git track <file>" to track)
Is this "git track" a synonym for "git add -N"?
> The opposite of staging is `git
> reset HEAD <file>` and the opposite of tracking is -- well, I’m not
> sure, actually.
Ah, this is a kind of obnoxious thing! For a newly added file,
git reset -- <path>
ought to un-add it, but it doesn't.
For a file that has been around for a while, removal is imho just
adding a different kind of change. It would be nice if
git add -- <path>
pointed to "git rm --cached" to help the operator to do that.
> The entire quoted paragraph in the tutorial can be removed: there’s
> simply no reason to tell the reader that git behaves differently from
> other version control systems
How will a person used to e.g. cvs ever adjust if they don't even
realize git is different?
Hope that helps,
Jonathan
next prev parent reply other threads:[~2010-10-18 21:19 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-18 20:45 Git terminology: remote, add, track, stage, etc Thore Husfeldt
2010-10-18 21:15 ` Jonathan Nieder [this message]
2010-10-18 22:48 ` [RFC/PATCH] reset: accept "git reset <removed file>" Jonathan Nieder
2010-10-18 23:56 ` Junio C Hamano
2010-10-19 0:23 ` Jonathan Nieder
2010-10-19 17:34 ` Junio C Hamano
2010-10-19 22:34 ` Jonathan Nieder
2010-10-18 21:35 ` Git terminology: remote, add, track, stage, etc Sverre Rabbelier
2010-10-19 0:03 ` Junio C Hamano
2010-10-19 17:51 ` Ramkumar Ramachandra
2010-10-19 18:28 ` Jonathan Nieder
2010-10-19 18:34 ` Sverre Rabbelier
2010-10-19 18:43 ` Thore Husfeldt
2010-10-19 19:04 ` User manual: "You cannot check out these remote-tracking branches" Jonathan Nieder
2010-10-19 20:52 ` Matthieu Moy
2010-10-19 19:15 ` Git terminology: remote, add, track, stage, etc Nicolas Pitre
2010-10-19 19:20 ` Junio C Hamano
2010-10-19 22:10 ` [RFC/PATCH 0/4] reset: be more flexible about <rev> Jonathan Nieder
2010-10-19 22:11 ` [WIP/PATCH 1/4] reset -p: accept "git reset -p <tree>" Jonathan Nieder
2010-10-19 22:12 ` [PATCH 2/4] reset: accept "git reset <tree> <path>" Jonathan Nieder
2010-10-19 22:13 ` [PATCH 3/4] reset: accept "git reset -- <path>" from unborn branch Jonathan Nieder
2010-10-19 22:14 ` [PATCH 4/4] reset: accept "git reset HEAD " Jonathan Nieder
2010-10-19 23:08 ` Junio C Hamano
2010-10-19 23:26 ` Jonathan Nieder
2010-10-27 15:03 ` Git terminology: remote, add, track, stage, etc Ramkumar Ramachandra
2010-10-27 15:16 ` Drew Northup
2010-10-27 16:08 ` Matthieu Moy
2010-10-28 15:20 ` Ramkumar Ramachandra
2010-10-28 18:25 ` Matthieu Moy
2010-10-18 21:41 ` Matthieu Moy
2010-10-19 4:49 ` Miles Bader
2010-10-19 7:19 ` Wincent Colaiuta
2010-10-19 7:48 ` Miles Bader
2010-10-19 8:05 ` Wincent Colaiuta
2010-10-19 15:09 ` Eugene Sajine
2010-10-22 20:16 ` Paul Bolle
2010-10-22 21:00 ` Eugene Sajine
2010-10-22 21:46 ` Drew Northup
2010-10-20 9:53 ` Thore Husfeldt
2010-10-20 11:34 ` Matthieu Moy
2010-10-20 14:01 ` Drew Northup
2010-10-18 21:57 ` Jakub Narebski
2010-10-19 8:05 ` Matthijs Kooijman
2010-10-19 8:27 ` Jakub Narebski
2010-10-19 17:30 ` Thore Husfeldt
2010-10-19 20:57 ` Jakub Narebski
2010-10-21 8:44 ` Michael Haggerty
2010-10-21 11:20 ` Drew Northup
2010-10-21 12:31 ` Thore Husfeldt
2010-10-21 12:56 ` Drew Northup
2010-10-21 14:06 ` Thore Husfeldt
2010-10-21 20:06 ` Drew Northup
2010-10-22 4:07 ` Miles Bader
2010-10-22 11:51 ` Drew Northup
2010-10-19 14:39 ` [PATCH v3] Porcelain scripts: Rewrite cryptic "needs update" error message Ramkumar Ramachandra
2010-10-27 14:55 ` Ramkumar Ramachandra
2010-11-05 22:38 ` Junio C Hamano
2011-02-12 23:14 ` Ævar Arnfjörð Bjarmason
2010-10-19 21:53 ` Git terminology: remote, add, track, stage, etc Drew Northup
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=20101018211522.GA7655@burratino \
--to=jrnieder@gmail.com \
--cc=git@vger.kernel.org \
--cc=thore.husfeldt@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).