What is the difference between origin and upstream on GitHub?
What is the difference between origin
and upstream
on GitHub?
When a git branch -a
command is done, some branches have a prefix of origin
( remotes/origin/..
) while others have a prefix of upstream
( remotes/upstream/..
).
This should be understood in the context of GitHub forks (where you fork a GitHub repo at GitHub before cloning that fork locally)
upstream
generally refers to the original repo that you have forked (see also "Definition of “
downstream
” and “ upstream
”" for more on upstream
term) origin
is your fork: your own repo on GitHub, clone of the original repo of GitHub From the GitHub page:
When a repo is cloned, it has a default remote called origin
that points to your fork on GitHub, not the original repo it was forked from.
To keep track of the original repo, you need to add another remote named upstream
git remote add upstream git://github.com/user/repo.git
You will use upstream
to fetch from the original repo (in order to keep your local copy in sync with the project you want to contribute to).
git fetch upstream
( git fetch
alone would fetch from origin
by default, which is not what is needed here)
You will use origin
to pull and push since you can contribute to your own repo.
git pull
git push
(again, without parameters, 'origin' is used by default)
You will contribute back to the upstream
repo by making a pull request .