Question

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?

Was it helpful?

Solution 2

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.

OTHER TIPS

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

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top