2.9 KiB
title | date | draft | description | tags | categories | series | favorite | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
Git Basics | 2020-08-27T16:22:07+02:00 | false |
|
|
|
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
- Why they're useful
-
Stubborn rebase
- Example from
42sh
git rerere
- Example from
-
Splitting a file with
blame
history- Give attribution to
Old New Thing
- Give attribution to
-
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).