"I'm an egotistical bastard, so I
name all my projects after myself.
First Linux, now Git”
Linus Torvalds, PC World. 2012-07-14
Linus needed a new source code revision manager for
Linux, and none of the available open source options at
the time where good enough, so he wrote his own in
Kernel 2.6.12 was the first release managed by Git and
version 1.0 of Git was released in December 2005.
Design goals of Git:
distributed revision management
protection against corruption,
both accidental and hostile
...but adoption would be faster if it was
not so difficult to use.
Originally Linus did not intend end users to use Git
directly, instead he tried to delegate to somebody
else the task of making the actual command line
interface. We are still waiting for it...
Luckily Git has been simplified and documentation
has improved over time, but some Git commands
still refer to Git internals that are difficult to grasp.
E.g. git-push: Update remote refs along with
After making your first repository, set up SSH key
for convenient authentication:
Note: Github is not the only Git hosting site,
Gitorious and Bitbucket are popular too.
- go to https://github.com/ottok/git-training and fork it
- look at the fork under your own Github account and
clone it to your laptop
- edit names.txt and add yours
- push changes back to Github
- in Github, do a merge request back to me
Want to put a simple shared repository on any SSH
capable server? Create a bare .git with no working files:
git init --bare
Want to have notifications when somebody commits?
Put a shell script at .git/hooks/post-receive
Sorry, but default commands not very friendly, so get
yourself good cheat cheets and write up your common
commands once you've figured them out..
Image credits Steve Bennet (http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/)