Re: Terminology question about remote branches.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/4/07, David Kastrup <dak@xxxxxxx> wrote:
> "Lars Hjemli" <lh@xxxxxxxxxxxxxxxxx> writes:
>
> > On 8/4/07, David Kastrup <dak@xxxxxxx> wrote:
> >> Now I think that I basically have no chance figuring this out on my
> >> own sufficiently well to be able to improve the documentation.
> >
> > Remote-tracking branch:
> >   A local copy of a branch in another repository. This kind of branch
> >   cannot be updated by 'git-commit' but only by 'git-fetch' (hence
> >   indirectly by 'git-pull' and 'git-remote update'). If you try to
> >   'git-checkout' a remote-tracking branch, you will get a detached HEAD.
> >
> > Local branch:
> >   A branch to which you may commit changes. Optionally, the branch can be
> >   configured to "follow" one of your remote-tracking branches. This means
> >   that a 'git-pull' without arguments (when your local branch is checked
> >   out), will automatically 'git-fetch' and then 'git-merge' the remote-
> >   tracking branch.
>
> Does that mean that specifying "--track" to git-checkout or git-branch
> never creates a remote-tracking branch?

Yes. The "--track" option just adds some extra info in .git/config:

[branch "master"]
  remote = origin
  merge = refs/heads/master


This info is then used by "git-pull" to
1. fetch updates from the remote repository "origin"
2. merge those updates from refs/remotes/origin/master

>
> > Example:
> >
> > Your local branch 'master' is setup to "follow"
> > 'refs/remotes/origin/master'.
>
> So --track/--no-track are actually supposed to be --follow and
> --no-follow?

Maybe ;-)

I just tried to avoid using the word "track" in more than one context,
since it seemed to be a main source of confusion.

>
> > So if you do this:
> >
> > $ git checkout master
> > $ git pull
> >
> > Then the 'git pull'-command will do this:
> >
> > $ git fetch -f origin master:remotes/origin/master
>
> This is then tracking?

Yes, this is the part that downloads objects from the remote
repository and updates refs/remotes/origin/master to refer to the same
commit as the master branch in the remote repository.

>
> > $ git merge remotes/origin/master
>
> And this is then following?

Yes, this updates your local 'master' with the commits downloaded by git-fetch


>
> > The magic setup that makes this happen is the following lines in .git/config:
> >
> > [remote "origin"]
> Namely: a remote-tracking branch "origin"

No. A remote repository: the name 'origin' can be used as an alias for

  git://git.kernel.org/pub/scm/git/git.git

>
> >         url = git://git.kernel.org/pub/scm/git/git.git
> >         fetch = +refs/heads/*:refs/remotes/origin/*
> >
> > [branch "master"]
> >         remote = origin
>
> Namely: follow the remote tracking branch origin?

No. Fetch objects from the remote repository alias "origin"

>
> >         merge = refs/heads/master

And this is the info added  by "git branch --track" which enables the
automatic merging of refs/remotes/origin/master (since
refs/remotes/origin/master is your local copy of refs/heads/master in
the 'origin' repository)


> >
> >
> > Was this helpful?

Talking to myself: obviously not


-- 
larsh
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux