blog/content/posts/git-basics.md

2.9 KiB

title date draft description tags categories series favorite
Git Basics 2020-08-27T16:22:07+02:00 false
git
cli
programming
Git basics
false

Git is a distributed version control system. Originally written by Linus Torvalds to be used with the development of the Linux kernel, it has now become the go-to way to share work between multiple developers.

In this article I will summarise what I feel to be the next-step basics of git, explaining each notion along the way.

I assume at least passing knowledge of git, and will therefore skip the justifications for using git instead of flinging tarballs at one another. I will also be skipping the explanation for the basic workflow of git add, git commit, and git push. You can consider this guide to be aimed at 3rd year students at EPITA, who have used git for a whole year to submit their project but have not explored some of its more powerful features.

Branches and references

  • Branches and merges

    • Decentralised
    • Merges are easy (assuming no conflicts)
  • What HEAD is

    • Why guillotine
    • What ARE references anyway
  • Relative references and other shortcuts

History manipulation

  • Cherry-picking

    • Easy to do
    • Most likely not what you want
      • CONFLICTS
  • The power of the rebase, Luke

    • Work on your own
    • Commit early, commit often
    • Clean-up merge requests
  • Lost? Here's a map

    • History manipulation can lose commits and other work
    • reflog can help you find it again

Tips and tricks

Here are some basic pieces of knowledge which don't really belong to any other section, which I think needs to be said.

The importance of small commits

  • Small commits

    • Why they're useful
      • Blame
      • Revert
      • Review & scope
    • git add -p
  • Stubborn rebase

    • Example from 42sh
    • git rerere
  • Splitting a file with blame history

    • Give attribution to Old New Thing
  • Binary search for a regression

    • bissect

Going further

I advise you to check out Learn git branching to practice a few of the notions I just wrote about, with a nice visualization of the commit graph to explain what you are doing along the way.

Furthermore, the Pro Git book is available online for free, and contains a lot of great content. You can read it whole, but I especially recommend checking out chapter 7 (Git Tools) and chapter 8 (Git Configuration). If you want to learn about the inner workings of git and how it stores the repository on your hard-drive, checkout chapter 10 (Git Internals).