5

I understand the idea of running git fetch <remote>, because the remote branches are then available with git checkout <remote>/<branch>.

But how does it work if I just run

git fetch path/to/other/repo

How can I checkout the corresponding branches? Note that the operation runs silently (even with --verbose), and that no new branch is created.

edit: just to be clear: I perfectly understand how git works with remotes. I'm just curious about this alternate syntax git fetch path/to/remote, or git fetch <url>. How is it supposed to work? Why does it not create new branches? Why does it run silently even in verbose mode? What is the intended usage?

Olivier Verdier
  • 46,998
  • 29
  • 98
  • 90

3 Answers3

3

Even if it's "local" in terms of file system, another repository is a remote repository.

If you want to use it, add it as a remote repository first (even if the url is local):

git remote add <name> <url>

Then, proceed with git fetch (and other commands) in the same way as with repository on remote machines.

EDIT: If you do a simple git fetch from a local path, it creates a new pseudo-branch called FETCH_HEAD. You can check it out in a new branch for example using:

git checkout -b new_branch FETCH_HEAD
Bruno
  • 119,590
  • 31
  • 270
  • 376
  • You did not get the point. I understand how git fetch works with named remote. I *don't* understand how git works when fetching directly from a path (or a url). – Olivier Verdier Sep 30 '10 at 09:49
  • @Olivier, sorry, I've just edited my answer to talk about `FETCH_HEAD`. – Bruno Sep 30 '10 at 09:56
1

I think the best explanation (much better than the docs) is an answer to another question by Jakub Narębski.

Basically:

git fetch <path>

just fetches the HEAD branch of the remote, and stores it locally into FETCH_HEAD.

git fetch <path> <branch>

fetches the branch in the remote repo and stores it in FETCH_HEAD.

More advanced usages are described in Jakub Narębski's answer, but, as he states himself, the best way to fetch is to use named remotes.

Community
  • 1
  • 1
Olivier Verdier
  • 46,998
  • 29
  • 98
  • 90
0

You have to explicitly pass a refspec to git fetch to get the remote branches. git help fetch should help.

Stefan Näwe
  • 3,040
  • 1
  • 18
  • 19