Fork, which is not a command in the Git tool itself, is not an extension of git, it's a concept on GitHub, another way of cloning-- clone on the server side.
In our usual sense, clone is a copy of the remote repo to the local.
When you clone a repo from GitHub to the local, you cannot pull request to it unless you have explicitly stated that it is the repo contributor, at this point, the remote repo is repo for local upstream.
When you fork a repo from GitHub, and then clone forked repo to local, you can pull the request arbitrarily, at which point the remote repo is origin.
When a repo was cloned, it had a default remote called Origin that points to your fork in GitHub, not the original re Po it is 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_name.git
Summary:  
1. If upstream repo, you can only pull up the latest code (that is, git fetch). This ensures that your local warehouse is synchronized with the source warehouse  
2. If it is Origin repo, it is your own repo (the project you created, or fork) you can do Any push-pull operation (pulls and push)  
3. You can contribute code to upstream repo by pull request span>
Referenced By http://stackoverflow.com/questions/6286571/ Git-fork-is-git-clone
What's the difference between origin and upstream in GitHub?
When a git branch-a command was done, some branches had a prefix of origin (remotes/origin/.) while others had a prefix of upstream (remotes/upstream/.).
================
This should is understood in the context of GitHub forks (where you fork a github repo at GitHub before cloning T Hat fork locally)
- Upstream generally refers to the original repo so 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 was cloned, it had a default remote called Origin that points to your fork in 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'll use upstream-to-fetch from the original repo (in order to keep your local copy on sync with the project You want to contribute to).
You'll use origin-to-pull and push -since you can contribute to your own repo.
You'll contribute back to the upstream repo by making a pull request.
http://my.oschina.net/uniquejava/blog/481625
The difference between origin and upstream in GitHub (RPM)