问题
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?
回答1:
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
回答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.
回答3:
You have to explicitly pass a refspec
to git fetch
to get the remote branches. git help fetch
should help.
来源:https://stackoverflow.com/questions/3829426/git-fetch-with-path-instead-of-remote