If GitHub is your first exposure to git, it's very easy to conflate the two.
Among other things, git is:
- The type of repository that contains a
.gitfolder - A set of tools for manipulating repositories and transfering data between repositories
- The protocols used to transfer data
The authors of git describe it as "plumbing", and interfaces as "porcelains".
It was originally hoped that people would write nicer interfaces, but it turned
out that by the time people got their heads around the details of how it
worked, most then thought the command-line tools made sense.
That said, a number of interfaces do exist, including integration with many IDEs (even Matlab).
GitHub is:
- A host for repositories
- An access-control manager (SSH keys -> Users -> Capabilities)
- A web-based porcelain
- Forks = fancy
git clone - Pull requests = fancy
git merge - Pull request reversion =
git revert - In-browser editing, direct uploads =
git add,git commit - Integration = git hooks
- Releases =
git tag
- Forks = fancy
- A collection of social networks based around projects
The GitHub desktop client is another example of a porcelain, integrated with GitHub.
GitHub isn't unique! Getting to know competing software/services will help solidify the difference between the parts that are git, and the parts that are GitHub.
- BitBucket - Similar to GitHub, built for Mercurial, but expanded to support git repositories
- GitLab - Self-hosted, similar to GitHub in use, good for maintaining private infrastructure
- gitolite - Self-hosted, minimal interface, more flexible, can work with git-annex
A comprehensive list is maintained on the git wiki.