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