git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Bill LearNext: Linus Torvalds
Message 21 of 22 in “Why is git clone not checking out files?”
  1. Bill LearJan 30, 2007
  2. Jakub NarebskiJan 30, 2007
  3. Bill LearJan 30, 2007
  4. Shawn O. PearceJan 30, 2007
  5. Bill LearJan 30, 2007
  6. Linus TorvaldsJan 30, 2007
  7. Jakub NarebskiJan 30, 2007
  8. Linus TorvaldsJan 30, 2007
  9. Bill LearJan 30, 2007
  10. Johannes SchindelinJan 30, 2007
  11. Bill LearJan 30, 2007
  12. Bill LearJan 30, 2007
  13. Bill LearJan 30, 2007
  14. Bill LearJan 30, 2007
  15. Jakub NarebskiJan 30, 2007
  16. Jakub NarebskiJan 31, 2007
  17. Bill LearJan 30, 2007
  18. Shawn O. PearceJan 30, 2007
  19. Jakub NarebskiJan 30, 2007
  20. Bill LearJan 30, 2007
  21. Linus TorvaldsJan 30, 2007
  22. Linus TorvaldsJan 30, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.