unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Steinar Bang <sb@dod.no>
To: emacs-devel@gnu.org
Subject: Re: Stash
Date: Mon, 06 Apr 2015 16:53:44 +0200	[thread overview]
Message-ID: <86zj6l5mvb.fsf@dod.no> (raw)
In-Reply-To: 86fv8d7ntk.fsf@dod.no

>>>>> Steinar Bang <sb@dod.no>:

>>>>> Richard Stallman <rms@gnu.org>:
>> I did

>>> git reset --hard HEAD

>> since I had installed all my changes.
>> Then I did 'git pull' and it reported a lot of things.
>> Then I did 'git status' which produced this:

>> # On branch master
>> # Your branch is ahead of 'origin/master' by 2 commits.
>> #
>> nothing to commit (working directory clean)

>> What does that second line "ahead of" mean?

> It means that the branch master has two commits that aren't in
> origin/master (which is your local copy of what's on savannah).

Speficically, it's like this:

A git branch is a list of commits, each pointing to its ancestor
(except for merge commits, which have two ancestors).

Git branches can be (er...) branched, and from the fork of the branch
and backwards, the branches are the same.

Once you have hold of a commit, you actually have hold of a branch with
that commit at its head.

Branch names like "master" and "origin/master" are just symbolic names
pointing to a particular commit.

So what you have (this needs a fixed width font), is:

            origin/master
            |
            v
  --o<--o<--o<--o<--o
                    ^
                    |
                    master

Ie. there is a chain of commits in your local repository forming a
history.  The local branch "master" points to one commit, and the branch
"origin/master" (which is your local representation of the state on
savannah).

When you do
 git fetch
changes are fetched from savanna and added to the list pointed to by
origin/master (actually, the commits are just added, since they already
are pointing back to their ancestor, and origin/master is just changed
to point to the newest commit from savannah).

If you have no changes on your local branch "master", the master branch
can be moved in the same way, ie. "master" can be changed to point to
the newest commit from savannah (this is what's known as a "fast
forward" merge)

If you have commits on your "master", "origin/master" and "master" needs
to be merged, just like any branch.

What I proposed, was to first create a new branch holding the current
state of master, and then reset "master" to point to the same commit as
"origin/master":


            origin/master
            |
            v
  --o<--o<--o<--o<--o
            ^       ^
            |       |
            |       two-unexpected-commits-on-master
            master

"origin/master" and "master" are actually files:
 .git/refs/heads/master
 .git/refs/remotes/origin/master

Inside the files is a sha1 hash uniquely defining a commit.




  parent reply	other threads:[~2015-04-06 14:53 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-05 17:42 Stash Richard Stallman
2015-04-05 18:31 ` Stash Steinar Bang
2015-04-05 18:38   ` Stash Eli Zaretskii
2015-04-06  5:50   ` Stash Richard Stallman
2015-04-06  6:37     ` Stash Steinar Bang
2015-04-06  7:35     ` Stash Eli Zaretskii
2015-04-06  7:57       ` Stash Eli Zaretskii
2015-04-07 19:31       ` Stash Stephen J. Turnbull
2015-04-08  5:28         ` Stash Eli Zaretskii
2015-04-06  5:50   ` Stash Richard Stallman
2015-04-06  6:50     ` Stash Steinar Bang
2015-04-06  6:55       ` Stash Eli Zaretskii
2015-04-06 11:25         ` Stash Mathias Megyei
2015-04-06 11:30           ` Stash Eli Zaretskii
2015-04-06 11:56             ` Stash Yuri Khan
2015-04-06 12:06               ` Stash João Távora
2015-04-06 12:25                 ` Stash Eli Zaretskii
2015-04-06 12:19               ` Stash Eli Zaretskii
2015-04-06 11:59             ` Stash João Távora
2015-04-06 12:21               ` Stash Eli Zaretskii
2015-04-06 13:06                 ` Stash João Távora
2015-04-06  6:55       ` Stash Eli Zaretskii
2015-04-06 14:53       ` Steinar Bang [this message]
2015-04-06 15:07         ` Stash Harald Hanche-Olsen
2015-04-06 18:48           ` Stash Steinar Bang
2015-04-06  5:51   ` Stash Richard Stallman
2015-04-06  7:29     ` Stash Eli Zaretskii
2015-04-06  7:55       ` Stash Harald Hanche-Olsen
2015-04-07 16:13       ` Stash Richard Stallman
2015-04-07 16:48         ` Stash Eli Zaretskii
2015-04-07 19:51           ` Stash Stephen J. Turnbull
2015-04-08 18:20             ` Stash Richard Stallman
2015-04-08 18:21           ` Stash Richard Stallman
2015-04-08 18:33             ` Stash Eli Zaretskii
2015-04-09 13:16               ` Stash Richard Stallman
2015-04-09 13:45                 ` Stash Eli Zaretskii
2015-04-10 10:57                   ` Stash Richard Stallman
2015-04-08 18:21           ` Stash Richard Stallman
2015-04-07 16:58         ` Stash Andreas Schwab
2015-04-08 18:21           ` Stash Richard Stallman
2015-04-09 17:07             ` Stash Andreas Schwab
2015-04-10 10:58               ` Stash Richard Stallman
2015-04-07 20:12     ` Stash Stephen J. Turnbull
2015-04-09 13:16       ` Stash Richard Stallman
2015-04-09 16:53         ` Stash Stephen J. Turnbull
2015-04-10 10:58           ` Stash Richard Stallman
2015-04-10 11:18             ` Stash Eli Zaretskii
2015-04-10 13:52             ` Stash Stephen J. Turnbull
2015-04-05 18:40 ` Stash Paul Eggert
2015-04-05 19:25   ` Stash Harald Hanche-Olsen
2015-04-05 19:59     ` Stash Paul Eggert
2015-04-05 19:26   ` Stash Steinar Bang
2015-04-05 20:18     ` Stash Stephen J. Turnbull
2015-04-05 19:41 ` Stash Harald Hanche-Olsen

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=86zj6l5mvb.fsf@dod.no \
    --to=sb@dod.no \
    --cc=emacs-devel@gnu.org \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).