// Journal

Do You Git It?

Published
Edited
Read
4 min

You can easily find an article about Git somewhere on the internet. Roger Dudler’s git - the simple guide is a great place to get familiar with Git. Want a condensed version? Check out the free cheat sheet PDF. Just don’t get caught up in the comment wars.

Loving the Right Version Control System

Git is a distributed version control system: everyone has a full copy of the repository, including its history, on their own machine. That can be confusing. When should a merge happen? What happens to my changes when I pull an update from the original repository?

Over a decade ago, I used Perforce and even set up a server, including one for some indie game development. Perforce is centralized, and it’s brilliant for merging and branching. Its diffing on merges is great, and the experience is intuitive for an engineer.

But today we’re looking at Git.

Living in the Shell

Do you download the desktop application, or do you live in the shell?

Adding another application to my software stack doesn’t sit well with me. Here’s why: updates take time. Whether you download applications from your OS vendor’s store or from the software vendor’s site, you should keep them up to date. And every update raises questions:

  • How many cycles are wasted reading release notes?
  • What about doing the actual updates?
  • What protocol does the update use?
  • Is it secure?

An interrupted download is unlikely in most cases, but the other questions remain.

By default, I block plain HTTP requests on my computers. Some vendors still deliver updates over HTTP, and it annoys me! I’d rather not maintain firewall rules and exceptions for them. Let’s just bang out a few lines in the terminal; with automation, it’s beautiful.

HTTPS or SSH is the way I like to go. With a little tmux here and a little vim there, I can live in the shell, automate updates, pull, push and do most of my work straight from the terminal.

Let’s Git to the Point

Git can talk to GitHub over HTTPS, but then you have to authenticate every time. GitHub no longer accepts account passwords for Git operations, so over HTTPS you need a personal access token, ideally stored in a credential helper. I’m sure this can be automated. My motto is “If a human can do it, so can a computer.” My past colleagues will attest to me saying this throughout my career.

Why Are You So Scared? Learn Something New.

One of my biggest gripes with Git is setting up a private and public key pair to use SSH. I’ve helped quite a few developers set up SSH. GitHub’s documentation, Connecting to GitHub with SSH, is great, but people often get the key pair wrong because, well, they don’t read the manual.

GitHub supports several key types. The public key file ends in .pub, and its name depends on the type:

  • id_ed25519.pub (Ed25519, recommended)
  • id_ecdsa.pub (ECDSA)
  • id_rsa.pub (RSA)

Generate the key pair. By default, ssh-keygen saves it in the .ssh folder in your home directory:

$ ssh-keygen -t ed25519 -C "your_email@example.com"

This Is Important!

When you generate your keys, please give them a passphrase. Also lock down the permissions on ~/.ssh so only your user can read and write it. You don’t want other admins or power users in there. (There isn’t much you can do if they can become root.)

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ed25519

As I mentioned, GitHub’s documentation is straightforward. See Generating a new SSH key and adding it to the ssh-agent.

Once your key pair is ready, copy the contents of your .pub file into your GitHub account settings. Then you can work with your repositories from your machine over SSH. Never share the private key, which is the file without .pub.

Closing Bytes and Bits

Reading documentation can be tedious. I scan for keywords, bold, italics, underlines and bullet points.

GitHub’s documentation is built to be read, and it gets straight to the point. Its setup guides are good.

Stay safe, and keep your private keys on lockdown. Plenty of engineers comment when they see me enter a passphrase for my keys while screen sharing.

I went a bit off topic today, but there’s a lot here that needs work from a user’s perspective. To close: there are different version control systems out there with different features. Whichever you choose, think about security to keep your intellectual property safe.

Git makes it easy to share code online, and your repositories can be public or private depending on the controls you put in place.


Edited in October 2026 for grammar and accuracy. Added GitHub’s token requirement for HTTPS, which took effect in August 2021, plus the ~/.ssh permission commands.

// Signal

Keep reading.

More notes on Python, vim, Git and the shell are waiting in the journal.

// Contact

Send a message

Only used to reply to you.

What's it about?

Up to 5,000 characters. Please don't include passwords or other sensitive details.

Your message is sent to my inbox by email and isn't stored on this site. The site has no analytics and no third-party scripts. Your IP address is used briefly to limit abuse and isn't included in the email.