Git

Advanced

Git is a distributed version control system that models the different states of a codebase in terms of a directed acyclic graph.

I started my Git journey with the "Version Control with Git" course from Atlassian in Coursera, motivated by the need to experiment with several different mixed-integer linear programming models for my master's thesis without creating chaos.

It was very effective because it explains the mathematical model that source code management follows in Git: directed acyclic graphs; and I had spent the last six months studying graph theory. After going through the course, using Git has always been a matter of figuring out how to make the modifications I want to the DAG, be it through the command line or graphical interfaces.

It also gave an introduction to Git workflows, which are patterns that teams can follow to work with Git. This is a topic I find very interesting and have continued digging into, because in essence, it deals with the problem of integrating the asynchronous work of a group of people in an efficient manner.

Beyond plain source code management, Git also offers a couple of advanced functionality such as the stash, hooks, binary search debugging or signed commits.

Besides digging deeper into what development workflows people use (Git-based or not) and why, I would like to learn about Git internals, more on the fine-grained details of the available Git forges, and novel concepts built on top of Git such as decentralized code repositories.