git push --force onto a shared branch instead of --force-with-lease, silently discarding someone else's pushed commits..gitignore wasn't set up before the first commit — once committed, they're in history until deliberately purged, not just deleted in a later commit.git fetch (downloads new data, doesn't touch your working files) with git pull (fetch + merge/rebase into your current branch immediately).git checkout for both "switch branches" and "discard file changes" and getting the two confused — git switch and git restore exist specifically to split these into two unambiguous commands.reset --hard or a bad rebase permanently destroyed work, without checking git reflog first.This site's own history is a real, if small, example of a lot of this in practice — see it at github.com/HMankad8/screening-platform. Practice the underlying data model — joins, transactions, and the queries these workflows ultimately protect — in SQL Fundamentals: Joins, NULL, Aggregate Functions, and Subqueries, or write and run real code in the code lab.