Main branch
Also called the “default” or “trunk” branch
Finalized, production-ready code and files
Permanent

Three flavors for teams of all sizes
Using branches to control where, when, and by whom a project is developed
Also called a “branching strategy”
Different strategies work best for teams of differing sizes and goals
Consistent strategy for project development
Better collaboration with team members
Parallel development
Organize releases
Fix issues and add features without disrupting development
Also called the “default” or “trunk” branch
Finalized, production-ready code and files
Permanent
Catered to feature development
Short-lived
Prepare specific version of project for release
Longer-lived but ephemeral
Staging branch for ongoing development
Changes are tested and integrated into project before merged into main
Permanent
Release focused development
Continuous integration into main branch
With or without separate ephemeral branches
Feature focused development optimized for web-based projects
Periodic integration into main branch
Each “feature” gets a new ephemeral branch
Complex development using release, develop, and feature branches
Trunk-based workflow - New projects, small teams and individuals
GitHub flow - Established projects, small and medium teams
Git flow - Mature or complex projects, large teams
Experiment with workflows and find one that works for your project and team
As your project evolves, you may need to change your workflow to accommodate your needs
U.S. Department of Commerce | National Oceanic and Atmospheric Administration | National Marine Fisheries Service