undo merge that hasn't been pushed
git reset --merge HEAD~1
roll back hard
git reset --hard <commit/tag>
force push of a previous commit
git push -f origin <commit_id>:<branch>
delete remote branch
git push --delete origin <branch>
reset local branch after a forced-update (above)
git fetch
git reset origin/<branch> --hard
renaming branch and updating remote
git branch -m old-name new-name
git push origin --set-upstream new-name
git push origin :old-name
set username for single repo
git config user.username 'name'
set signing key for local repo
git config user.signingkey <id>
signing commits
git commit -S -m 'msg'
compare diff between two commits
git diff <commit>...<commit>
stash
git stash
git stash show
unstash
git stash pop
add remote origin
git remote add origin git@gitserver/path/to/repo
add multiple push repos
git remote set-url --add --push origin git@gitserver/original/repo
git remote set-url --add --push origin https://gitserver/another/repo
archive branch
git archive --format zip --outpu /path/to/output.zip <branch>
using hub
pull requests
hub pr list
hub pr checkout <num>