Re: git clone operation
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Aug 17, 2008, 19:23 UTC
- Message-ID
- <m3wsifsawl.fsf@localhost.localdomain>
- In-Reply-To
- <20080817184443.GA11782@mg1.gantsfort.com>
Mike Gant <mwgant@gmail.com> writes:
> I'm trying to understand git-clone and what to expect when I clone a > repository. Disclaimer, I am a newbie :).
[...]
> According to the man page, git-clone "creates and checks out an initial > branch equal to the cloned repository's currently active branch."
[...]
Show 27 quoted lines
> Now, let's say that I am working in the cpu-intfc branch of the original > repository and I clone the repository. > > Running git-branch -a returns the following > > origin/HEAD > origin/cpu-intfc > origin/gige_mux > origin/improve-build > origin/main-devel > origin/master > * cpu-intfc > > And this, > > $ cat .git/refs/remotes/origin/HEAD > ref: refs/remotes/origin/cpu-intfc > > I was expecting to have a local branch named master (that is equal to > the remote branch origin/cpu-intfc) instead of cpu-intfc. Am I wrong to > expect this? Also, as a newbie user, it seems odd that I cannot specify > which branch of repo that I am cloning should be the default (master) > branch of the cloned repo? To put it another way, when cloning a repo I > have no way of controlling which branch I get as the default. It just > happens to depend on which branch the developer is working in at the > time I clone. I've read through the man-page and there doesn't seem to > be any way around this.
Currently the situation is a bit strange, because while git-remote supports selecting which branch is meant to be remote-tracking master branch via '-m <master>' option to "add" subcommand (setting origin/HEAD symref), git-clone which is init + remote + fetch + some bookkeeping and shortcuts doesn't.
Both commands are now built-in.
Show 6 quoted lines
> I realize that I can create a new local branch that is based off the > desired branch: > > $ git-checkout -b master origin/master > > Is this the accepted method for obtaining the desired branch?
You can use (with new anough Git)
$ git checkout --track -b master origin/master
to setup repository in such way that "git pull" on 'master' would know that it is meant to fetch from 'origin' and merge 'origin/master'.
In upcoming 1.6.1 it would be enough to use
$ git checkout --track origin/master
-- Jakub Narebski Poland ShadeHawk on #git