git

undo merge that hasn't been pushed

git reset --merge HEAD~1

roll back hard

git reset --hard <commit/tag>

making a pull request

branching and rebasing

branching model