Git is a distributed open source Version Control System that tracks content such as files and directories. Git allows the creation of a history for a collection of files, and stores the file content in BLOBs (binary large objects); which are captured in states that are fully accessible.
The state of a project might be a different collection of files or different content within the files. States can be saved as "Branches", which are akin to a copied file.
Since a distributed version control system has no central server, every local copy contains the full history of a project and is stored in a "Commit Object". Every time you make a modification, you have to "Commit" the change.
The "Commit File" keeps track of all versions including the author, committer and comments about the updated changes, plus any "Parent" commits that directly precede it allowing to revert back to any point in a project's code history. Git can be used from the command line or terminal.
Github is an open source project that manages and stores revisions of projects. It's literally a Git repository hosting service, with many of it's own features, such as wikis and basic task management tools for every project. The flagship functionality is "forking" or copying a repository from one user's account to another; which enables a user to modify a project in a user's own account. If you make changes you'd like to share, you can send a notification called a "pull request" to the original owner, then with a click of a button, merge the changes found in your repo with the original repository.
It makes contribution management easier allowing for both open-source and private repositories to have a place for both development discussions and patch distribution.
A repository is a central place where data is stored and maintained for safe keeping. A repository can be a place where multiple databases or files are located for distribution over a network, or a repository can be a location that is directly accessible to the user without having to travel across a network.
The open source community uses repositories to allow software to be found easier and a safe, trusted place to organize projects that a team can work with. Repositories can be set up Locally ( on one's computer ) or Remotely ( on a server in the cloud, like Github or Heroku).
Local repositories are the local copy of a project on one's computer. Using Git allows one to clone or fork a repository, e.g. create an exact copy of a repository with a complete history. Owners of repositories can sync changes from their local copy to a remote copy by Pulling and Posting; which creates the basic work flow of software development.
Remote repositories are the remote copy of a project located on another computer or host like Github or Heroku. The "source" repository is often distributed by way of a URL; which describes where the repository is located and what protocol ( http, ssh, git, etc.).
The source is known os the Branch Master and with a series of Git commands, a user will periodically update or "Git Pull" to retrieve new updates from the remote repository, then continue working locally and send or "Git Push" new changes or "Commits" to contribute to shared repositories.
Heroku is a cloud application platform and a brand new way of building and deploying web apps due to it's ease of use. Programmers can spend all of their time in development vs managing servers - a huge win by most accounts.
This focus on productivity makes development both easier and painless to build and run cloud applications. Designed as an open-source project in Ruby on Rails, the workflow is well documented and works seamlessly with Git.