A Git workflow is a recipe or recommendation for how to use Git to accomplish work in a consistent and productive manner.

Workflows are designed to be guidelines rather than concrete rules.

The Centralized Workflow uses a central repository to serve as the single point-of-entry for all changes to the project. This workflow doesn’t require any other branches besides “main”.

The core idea behind The Feature Branch Workflow is that all feature development should take place in a dedicated branch instead of the main branch. This encapsulation makes it easy for multiple developers to work on a particular feature without disturbing the main codebase. It also means the main branch should never contain broken code, which is a huge advantage for continuous integration environments.

The Forking Workflow is fundamentally different than the other workflows discussed in this tutorial. Instead of using a single server-side repository to act as the “central” codebase, it gives every developer a server-side repository. This means that each contributor has not one, but two Git repositories: a private local one and a public server-side one.

Source: https://www.atlassian.com/git/tutorials/comparing-workflows


Submodules allow you to keep a Git repository as a subdirectory of another Git repository. This lets you clone another repository into your project and keep your commits separate.

A common issue arises in these scenarios: you want to be able to treat the two projects as separate yet still be able to use one from within the other.

Source: https://git-scm.com/book/en/v2/Git-Tools-Submodules


What is a monorepo?

Definitions vary, but we define a monorepo as follows:

The repository contains more than one logical project (e.g. an iOS client and a web-application) These projects are most likely unrelated, loosely connected or can be connected by other means (e.g via dependency management tools)

The repository is large in many ways: Number of commits Number of branches and/or tags Number of files tracked Size of content tracked (as measured by looking at the .git directory of the repository)

Source: https://www.atlassian.com/git/tutorials/monorepos