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

Re: Terminology question about remote branches.

From
David Kastrup <dak@gnu.org>
Date
Aug 4, 2007, 14:01 UTC
Message-ID
<85ejijgzzg.fsf@lola.goethe.zz>
In-Reply-To
<20070804092933.aaec6d52.seanlkml@sympatico.ca>
Sean <seanlkml@sympatico.ca> writes:
Show 30 quoted lines
> David Kastrup <dak@gnu.org> wrote:
>
>> A local branch is one with a local branch head.  In contrast,
>> checking out a remote branch, while possible, leaves one with a
>> detached head.
>
> Yes.
>
>> "remote-tracking" basically means that git-pull will update the
>> branch according to changes in the remote repository.
>
> To be clear, it's the job of git-fetch to update remote-tracking
> branches with any changes found in the remote repository.  Git-pull
> runs git-fetch and then runs a git-merge to update the
> currently-checked-out branch.
>
> When this happens, git-merge must decide which
> remote-tracking-branch to merge into the currently checked out local
> branch.  You can set which remote-tracking-branch will be selected
> in this situation with the --track option.
>
> So assuming a remote-repo has two branches "master" and "branchX":
>
>    git clone remote-repo
>
> will give us two remote-branch (AKA remote-tracking-branches) of
> "origin/master" and "origin/branchX".  So:
>
>    git branch --track mylocalbranch origin/branchX
>    git checkout mylocalbranch

So --track does not set up a tracking branch, but makes a local _following_ branch _refer_ to a tracking branch.

What happens with
    git checkout origin/branchX
    git branch --track mylocalbranch
    git checkout mylocalbranch

? What if after the checkout (which leads to a detached head) I check in a few things, and then decide to name the branch and set it up as following a remote tracking branch? Instead of using git-branch for setting up the following, do I have to explicitly add the respective "remote" line (which does not specify a remote, but a remote tracking branch) into, uh, where?

> No, a local branch is never a remote-tracking branch; even when
> created with a --track option.  The --track option has muddied the
> terminology waters a bit and you're not the first to be confused by
> it.  The --track selects a branch from the repo to merge by default.

Well, GOOD. I have already come to the conclusion that the "--track" option, like the "remote" configuration recorded by it have the main purpose of confusing people and should not be confused with setting up a remote tracking branch, or referring to a remote branch.

> A remote branch and a remote-tracking branch are the same thing.
> Strictly speaking a local branch is never a remote-tracking-branch
> although the "--track" option makes that harder to explain.
You bet.
>> So the terminology seems fuzzy at the moment, and my attempt to
>> clear it up might not be the preferred way of doing it.
>
> Yeah, the documentation could use some fine tuning.

It is much too fine-tuned already. I think that first option names and config file options need to get some coarse-tuning where one does not have to split hairs and ignore the meaning of terms in order to understand them.

I have now "following" or "automerge" local branches which are set up to follow a "remote tracking" branch. Presumably, if I do

git-branch -b new-branch --track remote-branch

then I get a following branch set up which follows/automerges a remote tracking branch. So far so good. What do I get with

git-branch -b another-new-branch --track new-branch

Does this follow/automerges with new-branch? Does this follow/automerge with remote-branch?

What if I do

git-checkout remote-branch git-branch -b new-branch --track

Does this follow anything?
-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Previous: SeanNext: Sean
Message 26 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.