Sean <seanlkml@xxxxxxxxxxxx> writes: > David Kastrup <dak@xxxxxxx> 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 - 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