threads / discuss / 18017

remote tracking branches

Subject: remote tracking branches

## tl;dr

2 messages between Feb 25, 2009 and Feb 25, 2009.

replies: 1people: 2as markdown or json

John Dlugosz· Feb 25, 2009, 17:41 UTC · lore

The repository on my machine was apparently originally a simple file copy from another development machine, or set up manually. That is, was not done by using the "git clone" command. I have a [remote "pub"] in the config file with only a url in it, so I can use "pub" when I push and pull.

The command "git branch -r" shows nothing.
So, there are no remote tracking branches.  So what?  At first, I think
that this is nothing more than the defaults to use when pulling, to get
everything.  But, the example at the very end of Chapter 1 of the user
manual shows:
	fetch = +refs/heads/*:refs/remotes/linux-nfs/*
I don't have a refs/remotes directory now.  So what does
	git pull pub xx
do?  The _result_ is just fine, as expected.  But if pull calls fetch,
it needs to fetch it to some temporary place first and then merge that,
right?

If I add a suitable line to my config file (changing linux-nfs in the example to pub to match the remote name), what does that buy me? But first, is that all I need to do to enable this feature?

I'm guessing that it means I will be able to examine, e.g. using gitk, what is in pub, to see if there are changes I need and keep apprised of other's work.

--John
Jay Soffian· Feb 25, 2009, 17:53 UTC · re: John Dlugosz · lore

Re: remote tracking branches

On Wed, Feb 25, 2009 at 12:41 PM, John Dlugosz <JDlugosz@tradestation.com> wrote:

Show 19 quoted lines
> The repository on my machine was apparently originally a simple file
> copy from another development machine, or set up manually.  That is, was
> not done by using the "git clone" command.  I have a [remote "pub"] in
> the config file with only a url in it, so I can use "pub" when I push
> and pull.
>
> The command "git branch -r" shows nothing.
>
> So, there are no remote tracking branches.  So what?  At first, I think
> that this is nothing more than the defaults to use when pulling, to get
> everything.  But, the example at the very end of Chapter 1 of the user
> manual shows:
>        fetch = +refs/heads/*:refs/remotes/linux-nfs/*
>
> I don't have a refs/remotes directory now.  So what does
>        git pull pub xx
> do?  The _result_ is just fine, as expected.  But if pull calls fetch,
> it needs to fetch it to some temporary place first and then merge that,
> right?
FETCH_HEAD is the temporary place.
> If I add a suitable line to my config file (changing linux-nfs in the
> example to pub to match the remote name), what does that buy me?  But
> first, is that all I need to do to enable this feature?
Yes.
$ git config remote.pub.fetch "+refs/heads/*:refs/remotes/pub/*"

will command fetch to store what it retrieves under refs/remotes/pub as well as in FETCH_HEAD.

> I'm guessing that it means I will be able to examine, e.g. using gitk,
> what is in pub, to see if there are changes I need and keep apprised of
> other's work.

Well it also lets you track every branch that is on pub. Otherwise you're only retrieving whatever HEAD is on the remote. You may also find it more natural to examine changes before merging them w/remote tracking branches. e.g.:

$ git fetch $ git log pub/master..master

Oh, and "git branch -v" can now tell you how far ahead/behind your local branch is compared to the remote tracking branch.

j.

← back to recent threads