Skip to content

Latest commit

 

History

History
58 lines (44 loc) · 2.13 KB

File metadata and controls

58 lines (44 loc) · 2.13 KB

git and GitHub

If GitHub is your first exposure to git, it's very easy to conflate the two.

What is git?

Among other things, git is:

  • The type of repository that contains a .git folder
  • 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).

What is GitHub

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
  • A collection of social networks based around projects

The GitHub desktop client is another example of a porcelain, integrated with GitHub.

Alternatives to 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.