Subject: Re: Newbie grief

From: Jakub Narebski <[email-masked]>
Date: Wed, 02 May 2012 14:28:20 -0700 (PDT)

Rich Pixley <[email-masked]> writes:
> On 5/1/12 11:20 , Michael Witten wrote:
>> On Tue, May 1, 2012 at 18:15, Rich Pixley<[email-masked]>  wrote:
>>
>>> I want pull to work even without merging.  I want to be able to share a
>>> branch between different repositories and different users while the source
>>> code control system tracks this for me
>>
>> I believe you are missing the point that a `pull' in git is a `fetch'
>> followed by a `merge'. You should read about the `fetch' command by
>> reading (`git help fetch'), and make sure you understand how to use
>> refspecs; you will probably find it very instructive to play around
>> by specifying explicit refspecs to `git fetch' rather than relying
>> on the implicit rules (which can be somewhat confusing).

[...]
> That git uses the word "pull" to mean something different than
> previous source code control systems only adds to the confusion.  I
> was using "pull" in the more general sense of pushing and pulling
> data, not in the very narrow meaning of "git fetch + git merge".

In using "pull" vs "fetch" Git follows the convention of BitKeeper
(proprietary distributed version control system which was used for
Linux kernel development 'till "BitKeeper fiasco", and which Git
replaced).

> I'm still pretty much lost on refspecs and refs.  The terms are
> apparently not used in the manuals I've been reading and they don't
> seem to be used consistently even within git error messages.
> 
> Is "refspec" the git word for the branch pointer that points to the
> childless commit that defines a branch?

"Ref" in Git is a named reference (pointer) to a commit in DAG of
revisions, i.e. either [local] branch, tag, remote-tracking branch,
etc.

"Refspec" is a specification of mapping between ref name in remote
repository and "tracking" ref in local repository, e.g.

  refs/heads/*:refs/remotes/origin/*
  refs/tags/*:refs/tags/*

See any of git-pull(1), git-fetch(1) and git-push(1) manpages.

-- 
Jakub Narebski