Re: Why is git clone not checking out files?
- From
Linus Torvalds <torvalds@linux-foundation.org>
- Date
- Jan 30, 2007, 19:33 UTC
- Message-ID
- <Pine.LNX.4.64.0701301123300.3611@woody.linux-foundation.org>
- In-Reply-To
- <17855.38543.761930.929267@lisa.zopyra.com>
On Tue, 30 Jan 2007, Bill Lear wrote:
Show 15 quoted lines
> > Hmm, so I did this: > > % cd /repos/git/project > % GIT_DIR=. git branch > topic > > And then, tried it all again: > > % cd .. > % rm -rf project > % mkdir project > % cd project > % git --bare clone --shared > % GIT_DIR=. git fetch git://source/public/project
Heh. That's not doing what you seem to expect.
If you don't give it a branch to fetch into, "git fetch" will not populate *any* branch. It does fetch the data:
Show 8 quoted lines
> warning: no common commits > remote: Generating pack... > remote: Done counting 1148 objects. > remote: Deltifying 1148 objects. > remote: 100% (1148/1148) done > Unpacking 1148 objects > remote: Total 1148, written 1148 (delta 632), reused 1020 (delta 534) > 100% (1148/1148) done
but it never wrote it into a branch, since you didn't tell it where it should go.
It didn't go away entirely, though: it's referenced by FETCH_HEAD, and this is actually the *common* thing for fetch usage when you use it to just them merge the fetched result into your current head. That is, for example, what I do all the time (except the "fetch+merge" thing is usually just called "git pull" ;)
> % GIT_DIR=. git branch > [eh? No branches??]
Right.
> % cat HEAD > ref: refs/heads/master
.. and again, this is fine, but it just means that since no "master" branch exists, you have an empty HEAD with no commits.
> So, where are my branches? And don't tell me I don't need no > steenking branches...
You absolutely need some steenking branches, but you need to tell git which branch you want to use.
So either use
git --bare fetch git://source/public/project topic:master
(to tell git to fetch the remote 'topic' into the local 'master')
OR, if you just prefer using the 'topic' name - which is certainly not wrong at all, do
git --bare fetch git://source/public/project topic:topic git --bare symbolic-ref HEAD refs/heads/topic
where that second line is important: it's the one that tells that you want HEAD to be pointing to the 'topic' branch.
[ You could have done that second line before the fetch, and really considered it part of the "create repository" sequence, rather than the "fetch" sequence ]
Or something like that.
Linus