git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jay Soffian <jaysoffian@gmail.com>
To: "John M. Dlugosz" <ngnr63q02@sneakemail.com>
Cc: git@vger.kernel.org
Subject: Re: setting up tracking on push
Date: Wed, 11 Mar 2009 21:14:15 -0400	[thread overview]
Message-ID: <76718490903111814t1ab90a39h9252d0ccf8af05c4@mail.gmail.com> (raw)
In-Reply-To: <76718490903111758l4e4bd29et379e975deb8e99bd@mail.gmail.com>

On Wed, Mar 11, 2009 at 8:58 PM, Jay Soffian <jaysoffian@gmail.com> wrote:

> http://article.gmane.org/gmane.comp.version-control.git/54822/

Let me summarize that thread as best I can.

- The branches under refs/remotes (those shown by "git branch -r") are
remote tracking branches. This is because they typically match (i.e.
track) the corresponding branch on a remote.

- The branches under refs/heads (those shown by "git branch") are your
local branches.

- Local branches can be associated with remote tracking branches in
the repo's config (.git/config). This association is done
automatically in current git when creating a new local branch based on
a remote tracking branch (e.g, git checkout -b topic origin/master or
git branch topic origin/master). (You can use --track and --no-track
to be explicit about whether or not you want the association to
happen.)

The association itself is simply an entry in the repo's .git/config. e.g.:

[branch "topic"]
        remote = origin
        merge = refs/heads/master

So, what does this entry in the .git/config do for you? A number of things:

1) git branch -v, git status, and git checkout will tell you how far
ahead/behind the local branch is from the associated remote tracking
branch.

2) git fetch, w/o arguments, will look in the config, find the remote
for the currently checked out branch, and update the configured
remote-tracking branches for said remote. This requires a bit more
explanation. In the above example, while topic is checked out, git
fetch will find that the associated remote is called "origin". It will
then update origin per its configuration, also in .git/config. e.g.:

[remote "origin"]
        url = git://git.kernel.org/pub/scm/git/git.git
        fetch = +refs/heads/*:refs/remotes/origin/*

So that tells git fetch where to fetch from, which remote branches to
fetch, and where to store those branches locally. In this case, each
branch under refs/heads/ on git://git.kernel.org/pub/scm/git/git.git
will be fetched and stored locally as refs/remotes/origin/. Locally
the branches are called "remote tracking branches".

3) git pull, w/o arguments, will run git fetch per above. It then
knows (in this example) to merge refs/remotes/origin/master into
refs/heads/topic. (The value on the "merge =" line is arguably
confusing because it is relative to where the branch is stored on the
remote, not where it is stored locally.)

HTH,

j.

  parent reply	other threads:[~2009-03-12  1:15 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  3:07 setting up tracking on push Miles Bader
2009-03-06  3:17 ` John Tapsell
2009-03-06  4:49 ` Jay Soffian
2009-03-06 10:45   ` Johannes Schindelin
2009-03-06 11:15     ` Miles Bader
2009-03-06 14:15       ` Jeremy O'Brien
2009-03-06 15:43         ` Jay Soffian
2009-03-06 16:29           ` Miles Bader
2009-03-10 20:26             ` Marc Branchaud
2009-03-10 23:09               ` Jeff King
2009-03-11  1:52                 ` Jay Soffian
2009-03-11  2:04                   ` Jeff King
2009-03-11  2:59                     ` Jay Soffian
2009-03-11  3:06                       ` Jeff King
2009-03-11  3:40                         ` Jay Soffian
2009-03-11  3:44                         ` Jay Soffian
2009-03-11  3:57                           ` Jeff King
2009-03-11  4:15                             ` Jay Soffian
2009-03-24  9:58                               ` Jakub Narebski
2009-03-11  4:37                     ` Junio C Hamano
2009-03-11  4:56                       ` Miles Bader
2009-03-11  5:03                         ` Miles Bader
2009-03-11  5:22                       ` Jay Soffian
2009-03-11 21:39                         ` Marc Branchaud
2009-03-11  6:32                       ` Jeff King
2009-03-11 10:02                       ` Nanako Shiraishi
2009-03-11 16:40                         ` Jeff King
2009-03-12  0:08 ` John M. Dlugosz
2009-03-12  0:58   ` Jay Soffian
2009-03-12  1:11     ` Junio C Hamano
2009-03-12  1:16       ` Jay Soffian
2009-03-12  1:14     ` Jay Soffian [this message]
2009-03-12  1:21       ` Jay Soffian
2009-03-15  3:28       ` John M. Dlugosz
2009-03-15 12:36         ` Jay Soffian
2009-03-16  1:07           ` John M. Dlugosz
2009-03-16  1:43             ` Jay Soffian
2009-03-15 18:33         ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=76718490903111814t1ab90a39h9252d0ccf8af05c4@mail.gmail.com \
    --to=jaysoffian@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=ngnr63q02@sneakemail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).