Git Makes Sense… Until Other People Get Involved Florida DrupalCamp 2026 April Sides

Hi, I’m April Sides! Principal Software Engineer at Red Hat weekbeforenext aprilsides

Agenda Overview Branching Strategies Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Deployment Strategies Questions 3

Overview

What is Git?

What is Git? A popular open source version control system used to track and manage changes to digital files. Sort of like Google Doc Version History, but for code. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 6

What is Git? It can be used locally… Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 7

What is Git? …and shared remotely. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 8

Get Started with Git

Install Git How to install Git https://www.atlassian.com/git/tutorials/install-git Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 10

Install a Graphical User Interface (GUI) Application (optional) GUI Clients https://git-scm.com/downloads/guis Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 11

Visual Studio Code Extensions (optional) Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 12

Command Line Interface (CLI) + Oh My Zsh https://ohmyz.sh Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 13

Oh My Zsh current-directory git:(branch-name) Shows current directory and branch name in terminal prompt. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 14

Common Git Commands

Create a Local Git Repository Inside the project directory git init git add . git commit -m “Issue #: Initialized repository.” Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 16

Git Repository (Repo) A central storage location for managing and tracking changes in files and directories. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 17

Remote Repository Clone Options Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 18

Clone a Remote Git Repository git clone https://host.com/username/project.git cd project or git clone git@host.com:username/project.git cd project Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 19

Checkout Branch git checkout [branch name] Updates the files in the project directory to match the version committed to that branch. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 20

Add Changes git add -p Stages changes to be committed. -p makes it an interactive/patch staging process. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 21

Git add -p Partially stage changes to files to organize changes. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 22

Git add -p Stage this hunk [y,n,a,d,/,j,J,g,e,?]? ? y - stage this hunk n - do not stage this hunk https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 23

Git Status git status Shows status of the project directory, what’s staged and what’s changed. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 24

Commit Changes git commit -m “Issue #: Short description.” Records changes to the Git repository for the branch that is currently checked out. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 25

Branching Strategies

main = master (legacy projects)

Branching Strategies Trunk-based Commit to main branch Feature Branches Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Gitflow Forking 28

Commit to main branch

Commit to main branch main Sabine git checkout main git pull [make changes] git add -p Ezra Sabine [stage changes] git commit -m “Issue #: short description.” Sabine git push origin main Ezra Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 30

Pros ● ● ● ● Commit to main branch Simple workflow Move fast Good for small teams and experienced developers Identify bugs quickly ● ● ● ● ● Cons Managing code conflicts Risk breaking things Review and testing is challenging Rollback and recover complexity Feature flag complexity 31

Feature Branches

main Feature Branches feature git checkout main git pull git checkout -b feature/user/issue#—short-descr [make changes] feature Ezra Sabine git add -p [stage changes] Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 33

main Feature Branches (continued) feature git commit -m “Issue #: short description.” git checkout main feature git pull git checkout feature/user/issue#—short-descr Ezra Sabine git merge main [resolve any merge conflicts] Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 34

Merge Conflicts Same line(s) of code modified in both branches. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 35

Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 36

Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 37

Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 38

Merge Conflict Complications When conflicts are resolved git add -p [stage changes] git commit —no-edit Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 39

Merge Conflict Complications When in doubt, abort the merge and start over. git merge —abort Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 40

main Feature Branches (continued) feature git push origin -u feature/user/issue#—short-descr feature Create a Merge/Pull Request in the remote repository. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides Ezra Sabine 41

Merge/Pull Request (MR/PR) Request to the project to pull/merge your changes into a target branch. Provides an interface for code review. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 42

Merge/Pull Request Source Branch feature/user/issue#—short-description Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides Target Branch into main 43

Merge/Pull Request Code Review Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 44

Pros ● ● Feature Branches Developers can commit early and often Less risk of breaking commits blocking other developers ● ● Cons Merge conflicts Feature branches can become outdated 45

Gitflow

Gitflow A Git branching model with specific naming conventions and release management workflows. Created by Vincent Driessen in 2010 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 47

Gitflow Default Branch Naming Conventions Branch name for production releases: main Branch name for “next release” development: develop Feature branches: feature/ Release branches: release/ Hotfix branches: hotfix/ git-flow Git extensions collection Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 48

develop Gitflow: Develop Branch git checkout develop git pull main git checkout -b feature/user/issue#—short-desc [make changes] Ezra Sabine git add -p [stage changes] Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 49

develop Gitflow: Develop Branch git commit -m “Issue #: short description.” main git checkout develop git pull git checkout feature/user/issue#—short-descr Ezra Sabine git merge develop [resolve any merge conflicts] Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 50

develop Gitflow: Develop Branch git push origin -u feature/user/issue#—short-descr Create a Merge/Pull Request in the remote repository. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides main Ezra Sabine 51

Merge/Pull Request Source Branch feature/user/issue#—short-description Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides Target Branch into develop 52

Release Manager develop Gitflow: Release Branches git checkout develop git pull git checkout -b release/1.2 main 1.2 Ezra git push origin -u release/1.2 Create an MR/PR in the remote repository. release Sabine release 1.1 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 53

Release Manager Merge/Pull Request Source Branch release/1.2 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides Target Branch into main 54

Release Manager develop Gitflow: Release Branches Merge release MR/PR and create release tag. git checkout main main release 1.2 git pull Ezra git checkout develop Sabine git pull git merge main git push origin develop release 1.1 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 55

Release Tag Reference to a specific points in Git history. Example: software versions. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 56

Senior Developer Gitflow: Hotfix Branches git checkout main git pull git checkout -b hotfix/1.2.1 develop main hotfix 1.2.1 1.2 Ezra [make changes] Sabine git add -p [stage changes] 1.1 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 57

Senior Developer Gitflow: Hotfix Branches git push origin -u hotfix/1.2.1 develop main hotfix 1.2.1 1.2 Create an MR/PR in the remote repository. Ezra Sabine 1.1 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 58

Senior Developer Merge/Pull Request Source Branch hotfix/1.21 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides Target Branch into main 59

Release Manager Gitflow: Hotfix Branches Merge hotfix MR/PR and create release tag. git checkout main develop main hotfix 1.2.1 1.2 git pull Ezra git checkout develop Sabine git pull git merge main git push origin develop 1.1 Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 60

Pros ● ● ● ● Cons Gitflow Stable branch Protected branch Pairs well with an Agile sprint cycle Parallel release development ● ● ● Complex workflow Move slower Feature branches can become outdated 61

Forking

Forking Copy a remote repository project into a new remote repository project. Specific feature of remote repositories. (GitHub, GitLab, Bitbucket, etc.) Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 63

Merge/Pull Request Source Project Target Project user/project Source Branch feature/user/issue#—short-description Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides owner/project into Target Branch develop 64

Pros ● ● Main project repo is secure Easier to receive contributions external to the organization Cons Forking ● ● ● More complex workflow Less centralized development process Forks have to be kept up-to-date with main project repo 65

Deployment Strategies

Environments

Environments Local Preview Pre-production Production (Development) (MRs/PRs) (Dev, Stage, etc.) (Live) Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 68

Local Environment ● ● Run the site on your computer Make and test changes on your computer Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 69

Preview Environments ● ● Temporary preview sites for MRs/PRs Great for code review and QA before merging Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 70

Pre-production Environments ● ● ● Permanent sites for staging releases Great for QA during deployment process Defined by Platform as a Service hosting (PaaS) or Software as a Service (SaaS) on managed hosting solution Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 71

Production Environment ● Live website Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 72

Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 73

Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 74

How does the code move between environments?

Continuous Development

Continuous Development Continuous Integration (CI) Developers merging changes into a main branch frequently. Continuous Delivery (CD) Working software is ready to release at all times in a simple, repeatable deployment process. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 77

CI/CD Pipelines Automation of the build, test, and deploy phases of delivering code to production. https://about.gitlab.com/topics/ci-cd/ Typically a function of DevOps. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 78

DevOps Intersection of software development and operations. DevOps engineers develop and maintain infrastructure, tools, and processes to support the software development life cycle. https://about.gitlab.com/topics/devops/ Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 79

Release Manager GitLab CI/CD Pipelines Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 80

81

Linter A tool that analyzes source code for errors, vulnerabilities, and coding standards issues to improve code quality. Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 82

Failed Pipelines Block Merging Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 83

GitHub Actions Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 84

How Code Moves From Local to Production

Local Steps Clone/Pull from the remote Repo and create a new feature branch from develop Make, stage, and commit changes Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Push feature branch to remote Repo Create an MR/PR 86

Code Review Steps Code Review of MR/PR QA of MR/PR Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Merge of MR/PR into develop 87

Release Steps Create release branch from develop Create release MR/PR Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 QA release MR/PR Merge release MR/PR into main 88

Release Deployment Steps Create a release tag Merge main into develop Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Deploy release to pre-prod QA release on pre-prod 89

Complete Release Deployment Deploy to production QA on production Git Makes Sense… Until Other People Get Involved - Florida DrupalCamp 2026 Communicate the release 90

Resources ● ● Atlassian: Git - https://www.atlassian.com/git https://ohshitgit.com (https://dangitgit.com) Git Makes Sense… Until Other People Get Involved » Florida DrupalCamp 2026 » April Sides 91

Questions?