Git Makes Sense… Until Other People Get Involved

A presentation at Florida Drupal Camp in February 2026 in Orlando, FL, USA by April Sides

Slide 1

Slide 1

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

Slide 2

Slide 2

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

Slide 3

Slide 3

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

Slide 4

Slide 4

Overview

Slide 5

Slide 5

What is Git?

Slide 6

Slide 6

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

Slide 7

Slide 7

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

Slide 8

Slide 8

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

Slide 9

Slide 9

Get Started with Git

Slide 10

Slide 10

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

Slide 11

Slide 11

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

Slide 12

Slide 12

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

Slide 13

Slide 13

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

Slide 14

Slide 14

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

Slide 15

Slide 15

Common Git Commands

Slide 16

Slide 16

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

Slide 17

Slide 17

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

Slide 18

Slide 18

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

Slide 19

Slide 19

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

Slide 20

Slide 20

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

Slide 21

Slide 21

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

Slide 22

Slide 22

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

Slide 23

Slide 23

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

Slide 24

Slide 24

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

Slide 25

Slide 25

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

Slide 26

Slide 26

Branching Strategies

Slide 27

Slide 27

main = master (legacy projects)

Slide 28

Slide 28

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

Slide 29

Slide 29

Commit to main branch

Slide 30

Slide 30

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

Slide 31

Slide 31

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

Slide 32

Slide 32

Feature Branches

Slide 33

Slide 33

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

Slide 34

Slide 34

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

Slide 35

Slide 35

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

Slide 36

Slide 36

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

Slide 37

Slide 37

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

Slide 38

Slide 38

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

Slide 39

Slide 39

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

Slide 40

Slide 40

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

Slide 41

Slide 41

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

Slide 42

Slide 42

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

Slide 43

Slide 43

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

Slide 44

Slide 44

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

Slide 45

Slide 45

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

Slide 46

Slide 46

Gitflow

Slide 47

Slide 47

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

Slide 48

Slide 48

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

Slide 49

Slide 49

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

Slide 50

Slide 50

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

Slide 51

Slide 51

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

Slide 52

Slide 52

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

Slide 53

Slide 53

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

Slide 54

Slide 54

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

Slide 55

Slide 55

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

Slide 56

Slide 56

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

Slide 57

Slide 57

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

Slide 58

Slide 58

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

Slide 59

Slide 59

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

Slide 60

Slide 60

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

Slide 61

Slide 61

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

Slide 62

Slide 62

Forking

Slide 63

Slide 63

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

Slide 64

Slide 64

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

Slide 65

Slide 65

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

Slide 66

Slide 66

Deployment Strategies

Slide 67

Slide 67

Environments

Slide 68

Slide 68

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

Slide 69

Slide 69

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

Slide 70

Slide 70

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

Slide 71

Slide 71

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

Slide 72

Slide 72

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

Slide 73

Slide 73

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

Slide 74

Slide 74

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

Slide 75

Slide 75

How does the code move between environments?

Slide 76

Slide 76

Continuous Development

Slide 77

Slide 77

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

Slide 78

Slide 78

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

Slide 79

Slide 79

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

Slide 80

Slide 80

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

Slide 81

Slide 81

81

Slide 82

Slide 82

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

Slide 83

Slide 83

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

Slide 84

Slide 84

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

Slide 85

Slide 85

How Code Moves From Local to Production

Slide 86

Slide 86

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

Slide 87

Slide 87

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

Slide 88

Slide 88

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

Slide 89

Slide 89

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

Slide 90

Slide 90

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

Slide 91

Slide 91

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

Slide 92

Slide 92

Questions?