GitHub is basically a fancy wrapper around Git that adds a web interface and social features. It's where you push code so you don't lose it when your laptop dies, and where teams pretend to do code reviews before merging everything on Friday afternoon.
The Basic Stuff That Actually Matters
Git Hosting That Doesn't Suck
GitHub gives you unlimited private repos now - they finally figured out charging for private repos was stupid. You get the usual Git stuff: branches, commits, merges, and the inevitable merge conflicts that make you question your life choices. The web interface is decent for browsing code, though you'll still do most real work in your terminal.
Pull Requests: Democracy in Action
Pull requests are GitHub's main thing - someone makes changes, opens a PR, and then everyone argues about variable names for three days before rubber-stamping it. The review system works fine until your team lead decides to bikeshed every semicolon. Draft PRs are useful for "hey look at this broken shit I'm working on."
Issues: The Graveyard of Good Intentions
Every repo has an Issues tab where feature requests go to die. It's actually decent for bug tracking if your team doesn't abandon it after the first sprint. The search sucks though - good luck finding that bug report from six months ago.
The Expensive Shit They Try to Sell You
Codespaces: VSCode in the Cloud
GitHub Codespaces is basically VSCode running on Microsoft's servers. It's cool when it works, but you'll blow through your free 120 hours in about a week. At $0.18/hour minimum, it costs more than AWS EC2 instances for what amounts to a dev container with a fancy interface.
Security Theater
GitHub scans your code for accidentally committed secrets. I learned this the hard way when I pushed AWS keys to a public repo at 2 AM - their scanner caught it within 30 seconds, but not before three bots had scraped it. Dependabot creates more PRs than your entire team, updating dependencies that probably didn't need updating. Pro tip: Dependabot loves to update your testing framework right before a production deploy. Nothing like 47 broken tests to spice up your Friday afternoon.
People are still pushing secrets like fucking idiots. Last year alone, millions of API keys, passwords, and tokens got leaked to public repos. Despite all the security tools, vulnerable code patches increased by 50%. The average vulnerability sits there for years, which explains why your dependency updates feel endless.
The Security Dashboard Reality: GitHub's security features create a false sense of security. Secret scanning will catch your API keys, but only after you've already pushed them to a public repo and the damage is done. Dependabot alerts pile up faster than you can review them, and most teams just auto-merge dependency updates without understanding what changed.
The security stuff is actually useful if you can afford it. CodeQL finds real bugs, but the Advanced Security features cost extra because of course they do.