<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Acestus</title>
    <description>The latest articles on DEV Community by Acestus (@acestus).</description>
    <link>https://dev.to/acestus</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1059698%2F1bdee8db-853c-4e77-82f6-ff4a18cd1712.jpg</url>
      <title>DEV Community: Acestus</title>
      <link>https://dev.to/acestus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/acestus"/>
    <language>en</language>
    <item>
      <title>Trunk-Based Development vs Git Flow</title>
      <dc:creator>Acestus</dc:creator>
      <pubDate>Wed, 22 Apr 2026 17:00:08 +0000</pubDate>
      <link>https://dev.to/acestus/trunk-based-development-vs-git-flow-2kb5</link>
      <guid>https://dev.to/acestus/trunk-based-development-vs-git-flow-2kb5</guid>
      <description>&lt;h1&gt;
  
  
  Trunk-Based Development vs. Git Flow
&lt;/h1&gt;

&lt;p&gt;A decision document comparing two branching strategies. Evaluates each approach against our CI/CD maturity, team velocity, and DevOps best practices — then recommends a path forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; Decision Document&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Owner:&lt;/strong&gt; William Weeks-Balconi&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updated:&lt;/strong&gt; April 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audience:&lt;/strong&gt; Engineering, DevOps, Product Management, Leadership&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Executive Summary&lt;/li&gt;
&lt;li&gt;What Is Git Flow?&lt;/li&gt;
&lt;li&gt;What Is Trunk-Based Development?&lt;/li&gt;
&lt;li&gt;Side-by-Side Comparison&lt;/li&gt;
&lt;li&gt;Git Flow — Pros and Cons&lt;/li&gt;
&lt;li&gt;Trunk-Based Development — Pros and Cons&lt;/li&gt;
&lt;li&gt;Industry Evidence&lt;/li&gt;
&lt;li&gt;Impact on Our Team&lt;/li&gt;
&lt;li&gt;Recommendation&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Executive Summary
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Adopt trunk-based development. The industry consensus, our CI/CD maturity, and our team's pain with long-lived branches all point the same direction.&lt;br&gt;
!panel&lt;/p&gt;

&lt;p&gt;We currently follow a Git Flow–style branching strategy with &lt;code&gt;develop&lt;/code&gt;, &lt;code&gt;master&lt;/code&gt;, feature branches, release branches, and hotfix branches. While Git Flow served the industry well when it was introduced in 2010, it predates modern CI/CD practices and actively works against continuous integration.&lt;/p&gt;

&lt;p&gt;This document presents a fair comparison of both approaches and recommends trunk-based development based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DORA/Accelerate research&lt;/strong&gt; — trunk-based development is a key predictor of elite DevOps performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atlassian's official position&lt;/strong&gt; — Git Flow is now labeled a "legacy workflow"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The creator's own retraction&lt;/strong&gt; — Vincent Driessen recommends against Git Flow for teams doing continuous delivery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Our own experience&lt;/strong&gt; — long-lived branches drift, merge conflicts compound, and CI/CD pipelines can't validate what actually ships&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. What Is Git Flow?
&lt;/h2&gt;

&lt;p&gt;Git Flow was introduced by Vincent Driessen in 2010 as a branching model for git. It defines &lt;strong&gt;five branch types&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Branch&lt;/th&gt;
&lt;th&gt;Lifetime&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;master&lt;/code&gt; (or &lt;code&gt;main&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;Production-ready code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;develop&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;Integration branch for features&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;feature/*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Days–weeks&lt;/td&gt;
&lt;td&gt;New feature development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;release/*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Days&lt;/td&gt;
&lt;td&gt;Stabilization before production&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hotfix/*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hours–days&lt;/td&gt;
&lt;td&gt;Emergency production fixes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Git Flow Workflow Diagram
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlwr8zw0errsq8wm8dfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlwr8zw0errsq8wm8dfo.png" alt=" " width="593" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Developers create &lt;code&gt;feature/*&lt;/code&gt; branches from &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Completed features merge back into &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When ready for release, a &lt;code&gt;release/*&lt;/code&gt; branch is cut from &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Release branch gets final testing and bug fixes&lt;/li&gt;
&lt;li&gt;Release merges into both &lt;code&gt;master&lt;/code&gt; and back into &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Hotfixes branch from &lt;code&gt;master&lt;/code&gt;, merge into both &lt;code&gt;master&lt;/code&gt; and &lt;code&gt;develop&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key assumption: developers work in &lt;strong&gt;isolation&lt;/strong&gt; until their feature is "done," then integrate.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. What Is Trunk-Based Development?
&lt;/h2&gt;

&lt;p&gt;Trunk-based development (TBD) is a branching strategy where all developers commit to a single shared branch — &lt;code&gt;main&lt;/code&gt; (the "trunk") — at least once per day. Short-lived branches (hours, not days) may be used for code review, but they never diverge far from trunk.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Branch&lt;/th&gt;
&lt;th&gt;Lifetime&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;main&lt;/code&gt; (trunk)&lt;/td&gt;
&lt;td&gt;Permanent&lt;/td&gt;
&lt;td&gt;Single source of truth — always releasable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Short-lived branches&lt;/td&gt;
&lt;td&gt;Hours&lt;/td&gt;
&lt;td&gt;Code review via PR, merged same day&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Trunk-Based Development Workflow Diagram
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3o2sc9q0xlzo0qfjmo9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3o2sc9q0xlzo0qfjmo9i.png" alt=" " width="545" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Developers pull latest &lt;code&gt;main&lt;/code&gt;, make small changes, push frequently&lt;/li&gt;
&lt;li&gt;Short-lived branches (optional) exist only for PR review — merged within hours&lt;/li&gt;
&lt;li&gt;CI pipeline runs on every push to &lt;code&gt;main&lt;/code&gt; — build, test, lint, scan&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;main&lt;/code&gt; is always in a releasable state&lt;/li&gt;
&lt;li&gt;Feature flags hide incomplete work from users without hiding code from CI&lt;/li&gt;
&lt;li&gt;Releases are tags or automated deployments from &lt;code&gt;main&lt;/code&gt; — no release branches&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key assumption: feedback is most valuable when it's &lt;strong&gt;fast and continuous&lt;/strong&gt;, not delayed until "done."&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Side-by-Side Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Git Flow&lt;/th&gt;
&lt;th&gt;Trunk-Based Development&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Branch count&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5+ types, many concurrent&lt;/td&gt;
&lt;td&gt;1 permanent + short-lived&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration frequency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;When feature is "done" (days–weeks)&lt;/td&gt;
&lt;td&gt;At least daily, often multiple times&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Merge conflicts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frequent, large, painful&lt;/td&gt;
&lt;td&gt;Rare, small, easy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CI/CD compatibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Poor — which branch is "truth"?&lt;/td&gt;
&lt;td&gt;Native — trunk is always truth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment speed&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Slow — release branch stabilization&lt;/td&gt;
&lt;td&gt;Fast — trunk is always releasable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rollback strategy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hotfix branches&lt;/td&gt;
&lt;td&gt;Revert commit or feature flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code review&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PR on feature branch merge&lt;/td&gt;
&lt;td&gt;PR on short-lived branch (same day)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk of drift&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High — branches diverge silently&lt;/td&gt;
&lt;td&gt;Low — constant integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Testing confidence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tests run on approximation of production&lt;/td&gt;
&lt;td&gt;Tests run on actual production code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Team coordination&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low — isolated work&lt;/td&gt;
&lt;td&gt;High — shared ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning curve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Complex branch management&lt;/td&gt;
&lt;td&gt;Requires discipline around small commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DORA classification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Associated with low/medium performers&lt;/td&gt;
&lt;td&gt;Key predictor of elite performers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  5. Git Flow — Pros and Cons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clear separation of concerns&lt;/strong&gt; — each branch type has a defined purpose&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Familiar to many developers&lt;/strong&gt; — widely taught and documented since 2010&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit release process&lt;/strong&gt; — release branches provide a stabilization window&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parallel release tracks&lt;/strong&gt; — can maintain multiple release versions simultaneously (useful for packaged software)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Works against continuous integration&lt;/strong&gt; — branches are designed to &lt;strong&gt;isolate&lt;/strong&gt; change; CI is designed to &lt;strong&gt;expose&lt;/strong&gt; change. These are mutually exclusive goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long-lived branches drift&lt;/strong&gt; — the longer a feature branch lives, the more it diverges from reality. Merge day becomes pain day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Which branch is truth?"&lt;/strong&gt; — &lt;code&gt;develop&lt;/code&gt; isn't what ships. &lt;code&gt;master&lt;/code&gt; may be missing hotfixes not yet merged back. Neither branch definitively represents production state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delayed feedback&lt;/strong&gt; — developers don't learn their changes conflict until merge time, often after days or weeks of now-wasted work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex branch management&lt;/strong&gt; — five branch types require tooling, discipline, and cognitive overhead&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incompatible with CI/CD&lt;/strong&gt; — you cannot continuously integrate if code lives on isolated branches for days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;!panel(warning)&lt;br&gt;
&lt;strong&gt;The creator agrees.&lt;/strong&gt; Vincent Driessen updated his original Git Flow article: &lt;em&gt;"If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow like GitHub Flow instead of trying to shoehorn git flow into your team."&lt;/em&gt;&lt;br&gt;
!panel&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Trunk-Based Development — Pros and Cons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pros
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Continuous integration by design&lt;/strong&gt; — everyone integrates to trunk at least daily. There is one truth, one version, one pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small, frequent merges&lt;/strong&gt; — conflicts are small and caught immediately, not compounded over weeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast feedback&lt;/strong&gt; — CI runs on actual production code after every push. You know within minutes if your change is safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simpler branch model&lt;/strong&gt; — one permanent branch. Less tooling, less cognitive overhead, less ceremony.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Higher deployment frequency&lt;/strong&gt; — trunk is always releasable, so you can deploy on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DORA-validated&lt;/strong&gt; — the Accelerate research program (30,000+ professionals, 7 years of data) identifies trunk-based development as a key technical practice of elite-performing teams&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requires CI discipline&lt;/strong&gt; — the pipeline must be fast, reliable, and comprehensive. Broken trunk blocks everyone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature flags needed for large features&lt;/strong&gt; — incomplete work must be hidden from users (but not from CI). This adds a small operational cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cultural shift&lt;/strong&gt; — developers used to long-lived branches need to learn to work incrementally, commit smaller, and merge faster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less suitable for packaged software&lt;/strong&gt; — if you ship versioned releases to customers who control their own upgrades, release branches may still be necessary (this does not apply to our cloud-deployed services)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Industry Evidence
&lt;/h2&gt;

&lt;h3&gt;
  
  
  DORA / Accelerate Research
&lt;/h3&gt;

&lt;p&gt;The DevOps Research and Assessment (DORA) program — the largest study of software delivery performance — consistently identifies trunk-based development as a &lt;strong&gt;key predictor of elite DevOps performance&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From &lt;em&gt;Accelerate&lt;/em&gt; (Forsgren, Humble, Kim):&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Teams that practice trunk-based development, where developers work in small batches and merge into a shared trunk at least daily, achieve higher software delivery performance."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Elite-performing teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy on demand (multiple times per day)&lt;/li&gt;
&lt;li&gt;Lead time for changes: less than one day&lt;/li&gt;
&lt;li&gt;Change failure rate: 0–15%&lt;/li&gt;
&lt;li&gt;Time to restore service: less than one hour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these metrics are &lt;strong&gt;enabled by trunk-based development&lt;/strong&gt; and &lt;strong&gt;impeded by long-lived branches&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Atlassian's Official Position
&lt;/h3&gt;

&lt;p&gt;Atlassian, the company behind Bitbucket and the original popularizer of Git Flow documentation, now states:&lt;/p&gt;

&lt;p&gt;!panel(note)&lt;br&gt;
&lt;em&gt;"Git Flow is a legacy git workflow. This was originally a disruptive and novel strategy for managing git branches. Git Flow has fallen in popularity in favor of trunk-based workflows, which are now considered best practices for modern continuous software development and DevOps practices."&lt;/em&gt;&lt;br&gt;
— &lt;a href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow" rel="noopener noreferrer"&gt;Atlassian Git Tutorials&lt;/a&gt;&lt;br&gt;
!panel&lt;/p&gt;

&lt;h3&gt;
  
  
  Vincent Driessen's Retraction
&lt;/h3&gt;

&lt;p&gt;The inventor of Git Flow added this note to his original 2010 article:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow like GitHub Flow instead of trying to shoehorn git flow into your team."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Dave Farley — Continuous Delivery
&lt;/h3&gt;

&lt;p&gt;Dave Farley, co-author of the foundational &lt;em&gt;Continuous Delivery&lt;/em&gt; book, explains why Git Flow is incompatible with CI/CD:&lt;/p&gt;

&lt;p&gt;!embed&lt;a href="https://www.youtube.com/watch?v=_w6TwnLCFwA" rel="noopener noreferrer"&gt;Git Flow Is A Bad Idea — Dave Farley&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key points from the video:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Branches isolate change; CI exposes change&lt;/strong&gt; — these are mutually exclusive goals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"What if engineers didn't hold on to modules for more than a moment?"&lt;/strong&gt; — the original CI vision from its inventors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "truth" problem&lt;/strong&gt; — in Git Flow, neither &lt;code&gt;develop&lt;/code&gt; nor &lt;code&gt;master&lt;/code&gt; definitively represents what's in production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If develop and master are kept close, what's the point of both?&lt;/strong&gt; — the closer they are, the less Git Flow adds; the further apart, the more risk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daily integration is the minimum&lt;/strong&gt; — if your feature takes longer than a day, you can't wait until it's finished to integrate. If it takes less than a day, why create a feature branch?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The data is in&lt;/strong&gt; — continuous integration works better, even though it requires adapting how we work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Impact on Our Team
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where We Are Today
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;We already have &lt;strong&gt;automated CI pipelines&lt;/strong&gt; with build, test, and lint stages&lt;/li&gt;
&lt;li&gt;We already &lt;strong&gt;deploy regularly&lt;/strong&gt; to cloud environments&lt;/li&gt;
&lt;li&gt;Our pain: &lt;strong&gt;long-lived feature branches drift&lt;/strong&gt;, merge conflicts compound, and our CI pipelines validate branch code that may never match what ships to production&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What Trunk-Based Development Changes
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current (Git Flow)&lt;/th&gt;
&lt;th&gt;With Trunk-Based&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Feature branches live for days–weeks&lt;/td&gt;
&lt;td&gt;Short-lived branches merge within hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Merge day" conflicts&lt;/td&gt;
&lt;td&gt;Small, frequent merges with minimal conflict&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI validates &lt;code&gt;develop&lt;/code&gt; (not production)&lt;/td&gt;
&lt;td&gt;CI validates &lt;code&gt;main&lt;/code&gt; (which &lt;em&gt;is&lt;/em&gt; production)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Release branches for stabilization&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;main&lt;/code&gt; is always stable — deploy on demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hotfix branches for emergencies&lt;/td&gt;
&lt;td&gt;Revert or fix-forward on &lt;code&gt;main&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What Stays the Same
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pull requests and code review (still required — just on short-lived branches)&lt;/li&gt;
&lt;li&gt;Automated testing (still runs — now on the branch that matters)&lt;/li&gt;
&lt;li&gt;Branch protection rules on &lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;All existing CI/CD tooling and pipelines&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. Recommendation
&lt;/h2&gt;

&lt;p&gt;!panel(success)&lt;br&gt;
&lt;strong&gt;Adopt trunk-based development.&lt;/strong&gt;&lt;br&gt;
!panel&lt;/p&gt;

&lt;p&gt;The evidence is clear and converging from multiple independent sources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;DORA research&lt;/strong&gt; (30,000+ professionals, 7 years) → trunk-based development predicts elite performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atlassian&lt;/strong&gt; → now labels Git Flow a "legacy workflow"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vincent Driessen&lt;/strong&gt; (Git Flow's creator) → recommends against it for CI/CD teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dave Farley&lt;/strong&gt; (Continuous Delivery co-author) → Git Flow is fundamentally incompatible with CI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Our own experience&lt;/strong&gt; → long-lived branches cause the exact problems trunk-based development solves&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We already have the prerequisites: automated CI pipelines, a culture of code review, and regular deployments. Trunk-based development aligns our branching strategy with our delivery goals.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Forsgren, N., Humble, J., &amp;amp; Kim, G. (2018). &lt;em&gt;Accelerate: The Science of Lean Software and DevOps&lt;/em&gt;. IT Revolution Press.&lt;/li&gt;
&lt;li&gt;Driessen, V. (2010, updated 2020). &lt;a href="https://nvie.com/posts/a-successful-git-branching-model/" rel="noopener noreferrer"&gt;A successful Git branching model&lt;/a&gt;. nvie.com.&lt;/li&gt;
&lt;li&gt;Atlassian. &lt;a href="https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow" rel="noopener noreferrer"&gt;Gitflow Workflow&lt;/a&gt;. Atlassian Git Tutorials.&lt;/li&gt;
&lt;li&gt;Farley, D. (2021). &lt;a href="https://www.youtube.com/watch?v=_w6TwnLCFwA" rel="noopener noreferrer"&gt;Git Flow Is A Bad Idea&lt;/a&gt;. Continuous Delivery YouTube.&lt;/li&gt;
&lt;li&gt;Humble, J. &amp;amp; Farley, D. (2010). &lt;em&gt;Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation&lt;/em&gt;. Addison-Wesley.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dora.dev/research/" rel="noopener noreferrer"&gt;DORA Research Program&lt;/a&gt;. Google Cloud.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://trunkbaseddevelopment.com/" rel="noopener noreferrer"&gt;Trunk Based Development&lt;/a&gt;. trunkbaseddevelopment.com.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>git</category>
      <category>branchingstrategy</category>
      <category>cicd</category>
      <category>infrastructure</category>
    </item>
  </channel>
</rss>
