# Quick way to clone exactly one branch

4 messages from 2009-05-20 to 2009-05-28. Participants: Avery Pennarun, Jeff King, Jakub Narebski.
Thread: https://gitlist.dev/t/19425

## Avery Pennarun, 2009-05-20 20:45

Subject: Quick way to clone exactly one branch
Message-ID: <32541b130905201345h6daa84e8hb937e1e46456b3c5@mail.gmail.com>
URL: https://gitlist.dev/e/32541b130905201345h6daa84e8hb937e1e46456b3c5%40mail.gmail.com

```
Hi all,

Is there a quick alternative to the following?

   mkdir myproj
   cd myproj
   git init
   git fetch git://whatever master
   git checkout -b master FETCH_HEAD

Basically, the above is a lot like 'git clone' but only clones the
'master' branch.  For really big projects with lots of junk in other
branches, the above can save a lot of bandwidth.

Also, if I were using git clone, I would often use --reference above.
I'm kind of afraid of explaining to a newbie that they should add an
entry to .git/objects/info/alternates after step 3.

Am I missing something obvious?

Have fun,

Avery

```

## Jeff King, 2009-05-28 20:15

Subject: Re: Quick way to clone exactly one branch
Message-ID: <20090528201503.GL13499@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090528201503.GL13499%40coredump.intra.peff.net
In-Reply-To: <32541b130905201345h6daa84e8hb937e1e46456b3c5@mail.gmail.com>

```
On Wed, May 20, 2009 at 04:45:44PM -0400, Avery Pennarun wrote:

> Is there a quick alternative to the following?
> 
>    mkdir myproj
>    cd myproj
>    git init
>    git fetch git://whatever master
>    git checkout -b master FETCH_HEAD
> 
> Basically, the above is a lot like 'git clone' but only clones the
> 'master' branch.  For really big projects with lots of junk in other
> branches, the above can save a lot of bandwidth.

No, AFAIK there isn't a simpler way to do it. But it is something people
have asked about before, so I think it would be a nice addition.

You can't even use "git remote" because it doesn't allow you to tweak
the refspecs you add. To do it "just like clone" I think you would have
to:

  git config remote.origin.url git://whatever
  git config remote.origin.fetch refs/heads/master:refs/remotes/origin/master

It would be nice if that could be:

  git remote add -b master origin git://whatever

and then make it available as:

  git clone -b master git://whatever

Multiple "-b <branch>" options would generate refspecs to pull multiple
branches. You could even allow "git clone --refspec=<whatever>", but I
don't know what you would use that much flexibility for (and at that
point, you are probably comfortable enough to write the config
yourself).

-Peff

```

## Jakub Narebski, 2009-05-28 20:26

Subject: Re: Quick way to clone exactly one branch
Message-ID: <m3ljohas9x.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3ljohas9x.fsf%40localhost.localdomain
In-Reply-To: <20090528201503.GL13499@coredump.intra.peff.net>

```
Jeff King <peff@peff.net> writes:

> On Wed, May 20, 2009 at 04:45:44PM -0400, Avery Pennarun wrote:
> 
> > Is there a quick alternative to the following?
> > 
> >    mkdir myproj
> >    cd myproj
> >    git init
> >    git fetch git://whatever master
> >    git checkout -b master FETCH_HEAD
> > 
> > Basically, the above is a lot like 'git clone' but only clones the
> > 'master' branch.  For really big projects with lots of junk in other
> > branches, the above can save a lot of bandwidth.
> 
> No, AFAIK there isn't a simpler way to do it. But it is something people
> have asked about before, so I think it would be a nice addition.
> 
> You can't even use "git remote" because it doesn't allow you to tweak
> the refspecs you add. [...]

It doesn't? Strange, I thought that is what '-t <branch>' option
for "git remote add" for ;-))))

-- 
Jakub Narebski
Poland
ShadeHawk on #git

```

## Jeff King, 2009-05-28 20:32

Subject: Re: Quick way to clone exactly one branch
Message-ID: <20090528203200.GA14576@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20090528203200.GA14576%40coredump.intra.peff.net
In-Reply-To: <m3ljohas9x.fsf@localhost.localdomain>

```
On Thu, May 28, 2009 at 01:26:05PM -0700, Jakub Narebski wrote:

> > No, AFAIK there isn't a simpler way to do it. But it is something people
> > have asked about before, so I think it would be a nice addition.
> > 
> > You can't even use "git remote" because it doesn't allow you to tweak
> > the refspecs you add. [...]
> 
> It doesn't? Strange, I thought that is what '-t <branch>' option
> for "git remote add" for ;-))))

Oh, indeed. For some reason I thought that was about setting up tracking
for branches. So yes, Avery would be much better off in his example with

    git remote add -t master origin git://whatever

But it would still be even nicer to have "clone -t master".

-Peff

```
