threads / discuss / 19425

Quick way to clone exactly one branch

Subject: Quick way to clone exactly one branch

## tl;dr

4 messages between May 20, 2009 and May 28, 2009.

replies: 3people: 3as markdown or json

Avery Pennarun· May 20, 2009, 20:45 UTC · lore
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· May 28, 2009, 20:15 UTC · re: Avery Pennarun · lore

Re: Quick way to clone exactly one branch

On Wed, May 20, 2009 at 04:45:44PM -0400, Avery Pennarun wrote:
Show 11 quoted lines
> 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· May 28, 2009, 20:26 UTC · re: Jeff King · lore

Re: Quick way to clone exactly one branch

Jeff King <peff@peff.net> writes:
Show 19 quoted lines
> 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· May 28, 2009, 20:32 UTC · re: Jakub Narebski · lore

Re: Quick way to clone exactly one branch

On Thu, May 28, 2009 at 01:26:05PM -0700, Jakub Narebski wrote:
Show 8 quoted lines
> > 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

← back to recent threads