Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does "git pull" get all branches from repository but "git pull origin master" not do so?

Tags:

git

Why does git pull get all branches from repository but git pull origin master doesn't? I discovered it the hard way. Is it the only functional difference between these two commands?

Explanation like this tells me nothing:

git pull = git fetch origin + git merge origin/master

git pull origin master = git fetch origin master + git merge FETCH_HEAD

like image 990
Prostak Avatar asked Jul 05 '13 00:07

Prostak


2 Answers

The latter command, git pull origin master, tells git to fetch and merge specifically the master branch (from the remote named origin, to be even more precise).

git pull fetches updates for all local branches, which track remote branches, and then merges the current branch.

like image 112
esycat Avatar answered Oct 30 '22 10:10

esycat


From the documentation of git pull:

git pull runs git fetch with the given parameters and calls git merge to merge the retrieved branch heads into the current branch

When you call git fetch without arguments, the following happens

Fetches named heads or tags from one or more other repositories, along with the objects necessary to complete them.
git fetch [fetches] from (...) a single named repository (...)

When you add arguments, only the specified remote and head (=branch/tag/commit/...) are fetched, and then merged.

like image 10
phihag Avatar answered Oct 30 '22 10:10

phihag