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