What is the difference between pull and clone in git?


What is the difference between doing (after mkdir repo and cd repo):

git init
git remote add origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull origin master


git clone git://github.com/cmcculloh/repo.git

I mean, obviously one is shorter, but other than that are they basically doing the same thing?


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).

Meaning of the GitHub message: push declined due to email privacy restrictions

Git error on git pull (unable to update local ref)