GIT

Jonas Linde <jonas@init.se>
Background
- for the Linux kernel
- speed
- distributed
- cheap merges
- BitKeeper is doing it right
- CVS anv Subversion is doing it wrong
Objects
- files (blob)
- directories (tree)
- commits
- tags
Data flow
- working directory = HEAD + uncommited changes
- index = staged files
Remotes
- clone
- remote add
- fetch
- pull
- push
Work flow
- pull
- fetch + merge
- fast-forward
- change files
- add/rm/mv/stage
- commit
- rebase
- reset (https://xkcd.com/1597/)
- push
Branches
- branch
- tag
- checkout
Conflicts
- merge
- fix
- add
- commit