git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Terminology question about remote branches.

From
LHLars Hjemli <hjemli@gmail.com>
Date
Aug 4, 2007, 14:03 UTC
Message-ID
<8c5c35580708040703w44781498t7396588a3f8c81c8@mail.gmail.com>
In-Reply-To
<85k5sbh129.fsf@lola.goethe.zz>
On 8/4/07, David Kastrup <dak@gnu.org> wrote:
Show 21 quoted lines
> "Lars Hjemli" <lh@elementstorage.no> writes:
>
> > On 8/4/07, David Kastrup <dak@gnu.org> 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
Show 8 quoted lines
>
> > 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.

Show 11 quoted lines
>
> > 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
Show 5 quoted lines
>
> > 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
Show 8 quoted lines
>
> >         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
Previous: David KastrupNext: David Kastrup
Message 6 of 46 in “Terminology question about remote branches.”
  1. David KastrupAug 4, 2007
  2. Jeff KingAug 4, 2007
  3. David KastrupAug 4, 2007
  4. Lars HjemliAug 4, 2007
  5. David KastrupAug 4, 2007
  6. Lars HjemliAug 4, 2007
  7. David KastrupAug 4, 2007
  8. David KastrupAug 4, 2007
  9. Lars HjemliAug 4, 2007
  10. David KastrupAug 4, 2007
  11. Lars HjemliAug 4, 2007
  12. Jeff KingAug 5, 2007
  13. Julian PhillipsAug 4, 2007
  14. David KastrupAug 4, 2007
  15. Julian PhillipsAug 4, 2007
  16. David KastrupAug 4, 2007
  17. Theodore TsoAug 4, 2007
  18. David KastrupAug 5, 2007
  19. Jeff KingAug 5, 2007
  20. David KastrupAug 5, 2007
  21. Jeff KingAug 5, 2007
  22. David KastrupAug 5, 2007
  23. Jeff KingAug 5, 2007
  24. Jakub NarebskiAug 4, 2007
  25. SeanAug 4, 2007
  26. David KastrupAug 4, 2007
  27. SeanAug 4, 2007
  28. David KastrupAug 4, 2007
  29. Jeff KingAug 5, 2007
  30. Jeff KingAug 5, 2007
  31. Steffen ProhaskaAug 5, 2007
  32. Jeff KingAug 5, 2007
  33. David KastrupAug 5, 2007
  34. Jeff KingAug 5, 2007
  35. David KastrupAug 5, 2007
  36. Jeff KingAug 5, 2007
  37. Theodore TsoAug 5, 2007
  38. David KastrupAug 5, 2007
  39. Randal L. SchwartzAug 5, 2007
  40. SeanAug 5, 2007
  41. Jeff KingAug 5, 2007
  42. Junio C HamanoAug 5, 2007
  43. Steffen ProhaskaAug 5, 2007
  44. Julian PhillipsAug 5, 2007
  45. David KastrupAug 5, 2007
  46. Julian PhillipsAug 5, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.