Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Basics

Installation

To be able to use Git on your computer, install the Git command-line interface (CLI).

Basic Commands

Some basic commands, as well as commit commands, can be very useful in everyday use of Git CLI.

Best Practices

Follow some recommended best practices for version control in order to properly use Git, especially when working as part of a team.

Authentication

On some platforms like GitLab, one can easily sign in to their account through Git CLI by using a username and password. However, GitHub does not allow you to do that. Instead, you have to set up a personal access token that will be used to identify you when doing operations like pushing content to a remote repository.

Conventional Commits

Conventional Commits is a convention for standardizing commit messages in software projects, as proposed in this specification. It defines a clear structure for commits, making them more readable and enabling automation (e.g., changelog generation and semantic versioning).

For a quick reference, you can check this cheatsheet, which summarizes the most common commit types and formats.

Additionally, tools like commitlint help enforce these conventions. It’s a CLI tool that allows teams to share configurations and integrate commit message validation into their development workflow, including CI pipelines.

Git Branching Strategies

There are several approaches to managing versioning and feature development within a Git workflow. The guides below provide a detailed overview of common branching strategies and their typical use cases:

It is important to note that these strategies are not strict rules or universally optimal solutions. Instead, they serve as reference models to help understand different ways to organize a workflow and choose what best fits a project’s needs.

Monolithic Architecture

Monolithic architecture is a straightforward and unified approach to software design, where all components of an application are built and deployed as a single unit. This simplicity makes it easy to develop, test, and deploy, often resulting in strong performance due to reduced communication overhead between components.

It is particularly well-suited for small to medium-sized applications, proof-of-concept projects, and scenarios that require rapid and agile development. Because everything is contained within a single codebase, teams can move quickly without the complexity of managing distributed systems.

For a more detailed introduction and visual explanation, refer to this article.