git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Haggerty <mhagger@alum.mit.edu>
To: Jakub Narebski <jnareb@gmail.com>
Cc: Thore Husfeldt <thore.husfeldt@gmail.com>, git@vger.kernel.org
Subject: Re: Git terminology: remote, add, track, stage, etc.
Date: Thu, 21 Oct 2010 10:44:41 +0200	[thread overview]
Message-ID: <4CBFFD79.1010808@alum.mit.edu> (raw)
In-Reply-To: <m3ocar5fmo.fsf@localhost.localdomain>

On 10/18/2010 11:57 PM, Jakub Narebski wrote:
> Well, there is different suggestion: make `git stage`, `git track` and
> `git mark-resolved` to be *specializations* of `git add`, with added
> safety checks: 'git stage' would work only on files known to git /
> under version control already, 'git track' would work only on
> untracked files (and do what 'git add -N' does), and 'git mark-resolved'
> would work only on files which were part of a merge conflict.

I think that is a great idea.  The thing that I found most confusing
when learning git is that variations on a single command often have very
different effects.  My pet peeve is the over-versatile "git checkout":

git checkout BRANCH : Check out a branch.  This is the functionality
that I would expect from a "checkout" command.

git checkout -b NEWBRANCH OLDBRANCH : For me this was unintuitive,
because (IMO) the main effect of the command is to create a new branch.
 (I consider that more significant than the checkout because it has a
persistent effect on the repository.)  Therefore, I would expect this
functionality to be provided by "git branch" (something like "git branch
--checkout NEWBRANCH OLDBRANCH").

git checkout -b NEWBRANCH : This is even more unintuitive, because no
content is being checked out at all.  This should be written "git branch
--checkout NEWBRANCH".

git checkout -- PATH : To me this is again a totally different
operation.  The other uses of "git checkout" are safe; they don't lose
any information.  But this usage discards the working copy changes
irretrievably.  Such a different operation deserves a different command
with a "dangerous-sounding" name.  I think this functionality should be
made more easily accessible via "git reset", as has been suggested
elsewhere on this thread.  (Unfortunately "git revert" is already taken.)

git checkout BRANCH -- PATH : This is even more perverse.  Usually
"check out" makes the working copy more similar to a version in the
repository.  But this command makes it more different.

Michael

-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/

  parent reply	other threads:[~2010-10-21  8:44 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
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 [this message]
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=4CBFFD79.1010808@alum.mit.edu \
    --to=mhagger@alum.mit.edu \
    --cc=git@vger.kernel.org \
    --cc=jnareb@gmail.com \
    --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).