# UNDO THINGS (the reason most people search git) git restore # discard unstaged changes to a file git restore --staged # unstage, keep the changes git reset --soft HEAD~1 # undo last commit, KEEP changes staged git reset --hard HEAD~1 # undo last commit, THROW AWAY changes git revert # undo a pushed commit safely (new commit) git commit --amend # fix the last commit message or add a file git reflog # find a commit you think you lost # BRANCHES git switch -c new-branch # create and switch (modern 'checkout -b') git branch -d old-branch # delete merged branch (-D to force) git push origin --delete old # delete the remote branch git branch -m newname # rename the current branch # LOOKING AROUND git log --oneline --graph --all # the one worth aliasing git diff --staged # what you are about to commit git blame -L 10,20 # who touched these lines git show : # a file as it was at that commit # STASH git stash push -m "wip" # stash with a message git stash list git stash pop # apply AND drop git stash apply stash@{1} # apply a specific one, keep it # REMOTES git remote -v git fetch --prune # drop local refs to deleted remote branches git pull --rebase # linear history instead of a merge bubble # EMERGENCY git checkout -- # restore one file from an old commit git clean -nd # DRY RUN: what would be deleted git clean -fd # actually delete untracked files/dirs