Tutorials & Projects¶
A great way to bring the concepts covered in this guide into practice, and start building some muscle memory, is by completing the interactive tutorial of LearnGitBranching.
You can more or less regard it as a practical exam to this guide. While not every scenario presented there is realistic, its aim is to familiarise you with the Git CLI and it does so very well. It starts off quite easy, but it gets a lot more challenging towards the end.
After going through all the interactive exercises on that site, you will be proficient enough in Git to handle virtually all your version control needs.
Actively use Git¶
Work projects¶
Start using Git in all your programming projects at work. Even if the codebase may seem small, and using Git may seem trivial, use Git and adhere to the principles taught here (proper branching, committing, etc.).
If you stick to this, the fundamental principles of Git will become second nature in no time. Furthermore, you never know if your small work project eventually ends up becoming some huge repeating data analysis, with new requests coming in constantly. Then, you would be glad you had been using Git from the get go.
Private projects¶
Also, if you work on any private projects, use Git in those as well and combine it with a service like GitHub. This will enable you to practice working with remote branches and pull requests.
Apart from generic public repositories, I maintain a couple of private GitHub repositories with friends containing complex projects. These projects range from, e.g., Discord bots to web crawlers for Dutch real estate prices to investment portfolio management and optimization tools. When friends finish a feature in one of the repositories, they file a pull request, which I can then code review and eventually incorporate into the project.
Aside from learning Git in a real-world environment, it is also a great way to improve each other's programming skills by learning from peers.
Open-source contribution¶
You could also consider contributing to popular, large open-source projects in order to get more in-depth experience.
There is always work to be done in open-source projects, and this does not necessarily mean NASA-level complex stuff, such as optimising some confusing low-level algorithm in C++ to reduce CPU wall time by some 10 nanoseconds. To get your feet wet, you could start contributing by fixing some docstrings, doing some basic refactoring for convoluted code, or adding proper typing to existing functions and methods to help users' type checking and IntelliSense.
There are plenty of contributions to be made across all different degrees of coding skill, and every contribution is very valuable.