Before this week, “Git” and “GitHub” were basically the same word to me. Turns out they’re not even close. Git is the thing that runs quietly on your own machine, tracking every change you make. GitHub is just where you choose to back that history up online. You can use Git your whole life and never touch GitHub. I didn’t know that.
Here’s the moment it clicked: I had a messy .py file. Wednesday it worked. By Thursday, after “fixing” some visualizations, it didn’t. Without Git, that’s just a dead project. With Git, every one of those working versions is a commit, a saved checkpoint you can always go back to. That’s it. That’s the whole magic trick.
Turning a folder into a repo
I had a local folder full of scripts and no version history at all. Two commands fixed that:
git init
git add .
git commit -m "Initial project setup"
Enter fullscreen mode Exit fullscreen mode
init tells Git “start watching this folder.” add stages what I want tracked. commit locks it in as a checkpoint. Small, boring, and weirdly satisfying.
Where SSH actually fits in
This part confused me the most going in. SSH isn’t about Git itself. It’s about proving to GitHub it’s really you pushing code, without typing a password every time. You generate two keys: a private one that never leaves your laptop, and a public one you hand to GitHub.
ssh-keygen -t ed25519 -C "[email protected]"
Enter fullscreen mode Exit fullscreen mode
I pressed Enter through the file location prompt (default is fine for a first key) and set a passphrase. Then I added the key to my SSH agent so I wouldn’t get pestered for it constantly:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Enter fullscreen mode Exit fullscreen mode
Copied the public key (id_ed25519.pub, never the private one) into GitHub under Settings > SSH and GPG keys > New SSH key. Then tested it:
ssh -T [email protected]
Enter fullscreen mode Exit fullscreen mode
Got a “Hi username! You’ve successfully authenticated” message and felt an unreasonable amount of pride about it.
Connecting local to remote
Last step: link the local repo to an actual GitHub repository (created empty, no README, to avoid conflicts) and push.
git remote add origin [email protected]:yourusername/your-repo.git
git branch -M main
git push -u origin main
Enter fullscreen mode Exit fullscreen mode
Refreshed GitHub, and there it was, my messy little script, now with a real history, sitting online.
What actually stuck with me
The biggest shift wasn’t the commands, it was the mental model: your computer owns the history, GitHub just stores a copy of it. Push sends your commits up. Pull brings changes down. Everything else is details.
If you’re starting this same week, my honest advice: don’t rush the SSH part just to “get to the good stuff.” It’s the part that stops making sense retroactively once you understand why it exists as a way to authenticate, not a hoop to jump through.
Tell me your experience with Git and GitHub.