git problems?

feb 13, 2018

Git is a wonderful tool that many developers use multiple times every single day. Its wonderful feature set derives from a very general model for talking about data and changes made to this data. This general model is very expressive for the task of “versioning source control” but consequently has a relatively large interface. Moreover, the most commonly used interface (i.e. at the command line) is notoriously opaque. Any non-trivial task can quickly result in a panic and a series of arcane StackOverflow posts.

I would like to lay out the following plan for studying Git so that you are better equipped to handle these challenges when you come upon them. It will make you a better developer who can communicate even more value than you already do when working on a team (and with your future self).

Use git however you find natural for some time.

When you start to get a feeling for how git works and have experienced some situations that were out of your depth, watch the following videos:

Technical guide: Knowledge is Power: Getting out of trouble by understanding Git by Steve Smith

Style guide: Deliberate Git

These two videos are the best I’ve found on understanding the best way to use Git both locally and in a team. Once you have grokked these you will be well-equipped to understand more advanced material about deeper internals to apply to those sticky situations. I would recommend sharing this post with every developer you know so they can share in your understanding.

Bonus tip: check out magit, which is a “plugin” for Emacs. Even if you don’t want to use Emacs as your main editor, magit is worth using just to see how fun git becomes with a well-designed interface.