I’ve found myself recently answering how to learn Git (or specifically how I learned Git). This post is for anybody who might be interested and it serves as a link of resources for myself.
I basically referred to the following educational resources starting out.
Learn the basics
- Learn git by doing or, if you prefer to lay back with your ebook reader, check out the free Pro Git book.
Learning the basics by following the above instructions helps to prime you for moving on and learning about more advanced topics of Git. In order to understand any complicated problem or tool, if you don’t have the basics down then you’ll find it more difficult when tackling advanced topics.
Use it often
Use Git as often as you can. Any time you’re working with plain text files you should make use of Git as a habit. It’s real easy to simply:
git init
git add -A
git commit -m 'initial commit'
Then as you work on your project, regularly commit your changes by making use of
git add
and git commit
.
Learn about workflows
- Learn about workflows: gitflow, GitLab flow, and other types of workflows. Many teams use a mix of those defined workflows.
Workflows are a simple concept of, “how do I work.” There are many strategies one can adopt when using Git. Any time you’re working in a semi-complicated project that involves either:
- Releasing software.
- Working with more than one person.
You should probably adopt a workflow for yourself. I tend to adopt workflow even for projects I work on by myself. When adopting a workflow it’s always best to adopt it through social agreement rather than putting in technical controls to force it. That is, everybody just informally agrees to adopt the workflow else be willing to be shamed for not adopting it. If you need technical controls around how a workflow is adopted, then there is software that can help. Gerrit, GitHub, and GitLab offer solutions to protect branches. Gerrit offers the most advanced access controls around forcing a particular workflow.
Here’s an interesting workflow of how the Pro Git book was written: Living the future of Technical Writing
Learn branching
Branches are nice for local and team development. They can be used for code review as part of a development workflow. It’s easy to branch off for an experiment and merge back if your proof of concept is valid.
Advanced Learning
Once you’ve learned the basics, workflows, and branching you might want to tackle more advanced topics when learning Git. I found these links to videos helpful and I also include a video I produced.
- Advanced Git Training (video) disclaimer this was recorded by me. A knowledge gap talk, which bridges a git beginner to becoming an expert.
- Git from the bits up an advanced talk on Git internals and how it works.
- Advanced Git Tutorial by Linus Torvalds, the inventor of Git.
Reading documentation
- Read the documentation first and search the Internet as a fallback.
It’s always better to read the man
pages (i.e. manual pages) before attempting
to search for it on the Internet. There’s several reasons to read the man pages
before turning to the Internet. Some reasons include:
- You become more familiar with the tool documentation.
- You read the documentation which was explicitly written for the version of the tool in which you’re working.
- Increase your own understanding of self-drafted solutions which can be succinct.
Occasionally, help you find on the Internet doesn’t work for the version of Git you’re working with. Primarily because the person providing the help is using options that aren’t available in your (likely older) version. Here’s some examples of how to read documentation from the terminal.
git help
git help push
git help clone
You can also access those same man pages using the man
command and prefixing
each help page with git-
. For example,
man git-push
man git-clone
Nearly every command you could use with git has an associated man page. Take
advantage of that! man
is used to read manuals and apropose
is used to
search them. If you’ve not learned how to read man pages before then Internet
search, “how to read man pages.”
I enjoy taking man pages and reading them on my ebook reader. I wrote a script which converts man pages to PDF for portable reading. Here’s a few examples of taking a Git manual page and converting it to PDF.
./man2pdf git-push
./man2pdf git-clone
./man2pdf git-config
Teach Git
By teaching Git to others you’ll find your own understanding is drastically improved. In order to explain to others, you must first comprehend yourself. The process of you comprehending and explaining improves your ability to work with Git to know the right solution on your own when you encounter problems.
Happy hacking!