On Tue, 12 May 2015 20:34:01 -0700
Michael <keybou...@gmail.com> wrote:
> I'm just not understanding the git reset -- it seems to not just
> change the active branch, and possibly the working tree/cached for
> commit, but also alters where branch label point.
> That seems to be non-documented, and ... confusing.
Well, `git reset` is completely documented in its manual page
(try running `git help reset`). The problem with this command is that
it gathers several modes of operation under the same name.
The general distinction is this:
* Two ways to call `git reset` make it to do a job essentially reverse
to that of `git add`. In this mode, `git reset` operates on the index
These two ways to call `git reset` are:
git reset foo.js
to unstage the changes made to foo.js and added to the index by
calling `git add foo.js`. In more strict terms, this command sets
the index entry for the file foo.js to the contents it has at the
HEAD revision. You can specify a revision other than HEAD, if you
want. You can specify several files as well.
git reset --patch foo.js
Runs you through an interactive hunk-by-hunk "unstaging" which is just
like `git add --patch foo.js` but it removes the hunks from the index
rather than adding them. This command can be run with no files
specified and then it works on the whole index.
* Anothe three ways to call `git reset` affect the currently checked out
branch and possibly also the index and the work tree -- that's why
there are three of them.
These modes are selected by a special command line option: --soft,
--hard or --mixed, with the latter being the default.
The --soft option only repositions the branch's tip, the --mixed
option performs what the --soft does and also resets the index to
match the new tip. --hard does everything --mixed does and also
resets the work tree to match the new content of the index.
All this is documented in the manual page but the manual is, well,
a manual -- it's for strictly documenting, not for explaining from a
general standpoint -- that's what books and tutorials are for.
Hence I recommend you  and  to grasp the concepts in a non-manual
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/d/optout.