Knowing, git

“I know Git! Depending on what you mean by ‘know.’”

— @ThePracticalDev on Twitter

Git: yooooou oughta know

Knowing Is Half The Battle

I know git.

In case you were wondering.

Git Usability

One of the major criticisms of git is that it is hard to use. This isn’t quite right. The problem is that the git learning curve looks like this:

The cycle repeats. Repeatedly.
  1. Even after the fact, you get no indication anything is wrong
  2. You find out you did something wrong way after you did the wrong thing
  3. Problems are cryptic in nature and in messaging
  4. A small mistake can affect dozens of other people
  5. Mistakes arehard to recover from
  6. It’s hard to tell when the recovery is successful
  7. The whole time, you’re worrying that the system just ATE hours and hours of your productive time

Don’t Do That, Then

So, there’s this fellow Tom. Tom pushed his changes to the master branch, and it’s got a thousand commits in it, because he was trying to be careful and commit incrementally. Now the master branch has a thousand commits on it, people are screaming, someone started fixing it and now there are two branches, folks have pushed their own changes, and everything is on fire.

  1. Probably because the team thinks that “release engineer” or “build master” are dirty words, but if they have this sort of conflict, they probably need one.
  2. No pre-checks/tests to prevent pushing broken code — i.e., no checks for code content.
  3. No pre-checks to prevent pushing un-squashed commits (if that’s what Tom’s house has decided on) — i.e., no checks for code metacontent.
  4. No indication ahead of time that Tom was about to do something wrong
  5. No indication after the fact that anything was wrong
  6. No help on how to fix it
  7. No coordination on how and who fixes it

“Some kind of help is the kind of help we all can do without”

Git is an extremely flexible tool.

Noah Iliinsky has a great talk about abstracting requirements. It’s not about where the plumbing is; it’s about the user’s mental model, workflow, and goals.


The vast majority of git usage looks like this:

  1. I make and save changes locally.
  2. Periodically, I share those changes.

The light at the end of the tunnel

I have two points, I guess.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alex Feinman

Alex Feinman


Obligate infovore. All posts made with 100% recycled electrons, sustainably crafted by artisanal artisans. He/him/his.