A tool for distributed version control. It saves annotated snapshots (diffs) of a directory. Each snapshot is called a “commit”. It it designed for code.

Powerful, with a poor user interface.

The Essential Basics

$ git status
$ git diff filename
$ git add
$ git commit

Checkout / HEAD

$ git checkout commit|branch

HEAD is a name for the currently checked out commit - The commit you are working on top of.

Branches

$ git branch name # vs git checkout -b name
$ git merge

Remotes

A special kind of branch that tracks a remote git repository

$ git clone url
$ git remote -v
$ git pull remote branch
$ git push remote branch

ssh-keys

gitlab documentation

Advanced

$ git reset HEAD~3
$ git revert
$ git cherry-pick commit ...
$ git rebase -i commit|branch

Git Resources

Other Version Control Options

Image Sizes

Compress your images!