What is the difference between pull and clone in git?
git clone
is how you get a local copy of an existing repository to work on. It's usually only used once for a given repository, unless you want to have multiple working copies of it around. (Or want to get a clean copy after messing up your local one...)
git pull
(or git fetch
+ git merge
) is how you update that local copy with new commits from the remote repository. If you are collaborating with others, it is a command that you will run frequently.
As your first example shows, it is possible to emulate git clone
with an assortment of other git commands, but it's not really the case that git pull
is doing "basically the same thing" as git clone
(or vice-versa).
git clone
means you are making a copy of the repository in your system.
git fork
means you are copying the repository to your Github account.
git pull
means you are fetching the last modified repository.
git push
means you are returning the repository after modifying it.
In layman's term:
git clone
is downloading and git pull
is refreshing.
In laymen language we can say:
- Clone: Get a working copy of the remote repository.
- Pull: I am working on this, please get me the new changes that may be updated by others.
They're basically the same, except clone will setup additional remote tracking branches, not just master. Check out the man page:
Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository (visible using git branch -r), and creates and checks out an initial branch that is forked from the cloned repository's currently active branch.