{"id":6317,"date":"2026-08-26T07:36:20","date_gmt":"2026-08-26T07:36:20","guid":{"rendered":"https:\/\/staging.wingify.com\/glossary\/?p=6317"},"modified":"2026-09-01T18:12:44","modified_gmt":"2026-09-01T18:12:44","slug":"trunk-based-development","status":"publish","type":"post","link":"https:\/\/wingify.com\/glossary\/trunk-based-development\/","title":{"rendered":"Trunk-based Development"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What is trunk-based development?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trunk-based development (TBD) is a&nbsp;<a href=\"https:\/\/www.abtasty.com\/blog\/git-branching-strategies\/\" target=\"_blank\" rel=\"noopener\">git branching strategy&nbsp;<\/a>where developers collaborate in a single branch called \u2018trunk\u2019&nbsp; and make smaller changes more frequently. In this case, developers rarely branch and should they do, the branches are usually short-lived, typically lasting no more than a few hours.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thus, the underlying idea behind this strategy is to limit long-lasting branches and as a result avoid what is referred to as \u2018merge hell\u2019. Instead, the process of trunk-based development revolves around the concept that features should always be in a state ready for release.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How is this done exactly? Put simply, each developer splits the work they do in smaller batches and merges into the trunk or mainline so they commit directly into the trunk without the use of branches. This means that there is only one branch where developers directly commit known as the trunk.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trunk-based development and CI\/CD<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trunk-based development is required for and a&nbsp;<a href=\"https:\/\/www.abtasty.com\/resources\/ci-cd\/\" target=\"_blank\" rel=\"noopener\">key enabler of continuous integration and continuous delivery<\/a>. Because developers are making changes multiple times a day to the trunk and any branches are merged as frequently as possible, they are adhering to the practice of continuous integration. This makes the process of releasing new features quicker, hence making continuous delivery possible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, in this sense, trunk-based development creates the environment necessary for continuous integration as commits occur multiple times a day. In other words, it creates the conditions necessary for continuous integration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The two concepts are so intertwined that sometimes one can be used in lieu of another as they both adhere to the same idea of continuously integrating to the trunk. Or alternatively, you need trunk-based development to implement continuous integration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When to implement trunk-based development?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trunk-based development usually works best when you have a team of experienced, senior developers as this kind of workflow gives them the autonomy they need to get the job done.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, it\u2019s less recommended when you have a team of junior developers whose work you need to monitor closely. It is also not highly recommended if you are running an open-source project where you might need stricter control over any changes made since in this kind of project anyone can contribute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Product maturity is another factor to consider in the decision to use trunk-based development. If the product is just starting out, the priority is usually to get it up and running in no time. Meanwhile, for a more mature product, you might want to monitor any changes closely, lest you lose a great amount of money depending on how much your well-established product is worth. In this case, you might want to consider&nbsp;<a href=\"https:\/\/www.abtasty.com\/glossary\/feature-branch\/\" target=\"_blank\" rel=\"noopener\">feature branching<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Trunk-based development is often combined with&nbsp;<a href=\"https:\/\/www.abtasty.com\/resources\/feature-flags\/\" target=\"_blank\" rel=\"noopener\">feature flags \u2013 or feature toggles<\/a>, so any new features can be deployed as soon as they are ready and&nbsp;<a href=\"https:\/\/www.abtasty.com\/blog\/feature-rollback\/\" target=\"_blank\" rel=\"noopener\">rolled back easily in case of bugs<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Benefits of trunk-based development<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Escape from merge hell<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unlike feature branching, branches in trunk-based development are short-lived, lasting no more than a few hours. This eliminates the risky task of merging long-lived branches that have split from the trunk leading to fewer conflicts or what we referred to earlier as \u2018merge hell\u2019. This leads us to the second advantage of TBD.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fewer merge conflicts<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">By implementing continuous integration, developers push their changes to the shared branch at least once a day, so the likelihood of merge conflicts is significantly reduced.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is because developers are not waiting for long periods of time to integrate their changes making it easier to resolve any conflicts that may arise. Any bugs become easier to spot and likely to be fixed quicker ensuring a smooth integration into the mainline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additionally, as usually there are no branches so developers push code directly into the trunk thereby discarding the need and hassle of merging long-lived branches.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quicker feedback<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Continuously integrating changes to the trunk allows for continuous improvements to be made to features as developers are able to validate their changes with that of their colleagues.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is unlike feature branching where each developer works independently within a branch and any changes made within that branch would only be seen after merging into the main branch, which may take days or even weeks.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consequently, trunk-based development offers greater visibility allowing developers to ensure that their changes are aligned and work seamlessly with other recent commits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quick releases<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quicker feedback naturally leads to quick releases. Committing changes to the trunk on a regular basis leads to more&nbsp;<a href=\"https:\/\/www.abtasty.com\/resources\/release-management-guide-for-product-managers\/\" target=\"_blank\" rel=\"noopener\">efficient release management<\/a>&nbsp;and more frequent deployments. With a continuous stream of work being integrated into the trunk and continuous small changes to the feature being released bring a more stable release. This release would then be ready for deployment at any given moment in time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a fast-paced environment, rolling out constant updates and upgrades to features is a given. Trunk-based development is indispensable to get these releases out faster and not just any release but a high-quality release with significantly fewer bugs. Therefore, new features reach the end-user much faster. Basically, use trunk-based development when time is of the essence.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Use with caution<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Trunk-based development is not without its weaknesses. When you have developers constantly adding changes to trunk, you end up in a constant state of churn. It is important to ensure that developers are regularly pulling from the trunk so that they don\u2019t end up tripping over one another while adding new commits.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As mentioned earlier, there are also instances where implementing trunk-based development is not prudent. In this case, developers should consider other development methods such as feature branching.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep reading:&nbsp;<a href=\"https:\/\/www.abtasty.com\/blog\/git-branching-strategies\/\" target=\"_blank\" rel=\"noopener\">how trunk-based development stacks up against other Git branching strategies<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">To sum it up<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the end, the benefits of this technique far outweigh its weaknesses. Choosing the right method for managing source code depends on what is right for your team. However, if you\u2019re looking to deliver high-quality releases to your customers while promoting efficient collaboration between developers then the simple strategy is to implement this practice within your business.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.<\/p>\n","protected":false},"author":801,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6317","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trunk-based Development - Wingify Glossary<\/title>\n<meta name=\"description\" content=\"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wingify.com\/glossary\/trunk-based-development\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trunk-based Development - Wingify Glossary\" \/>\n<meta property=\"og:description\" content=\"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wingify.com\/glossary\/trunk-based-development\/\" \/>\n<meta property=\"og:site_name\" content=\"Wingify Glossary\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-26T07:36:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-01T18:12:44+00:00\" \/>\n<meta name=\"author\" content=\"Ketan Pande\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/\"},\"author\":{\"name\":\"Ketan Pande\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/#\\\/schema\\\/person\\\/03f465f334ef2578c99da01cb4b166bc\"},\"headline\":\"Trunk-based Development\",\"datePublished\":\"2026-08-26T07:36:20+00:00\",\"dateModified\":\"2026-09-01T18:12:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/\"},\"wordCount\":1021,\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/\",\"url\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/\",\"name\":\"Trunk-based Development - Wingify Glossary\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/#website\"},\"datePublished\":\"2026-08-26T07:36:20+00:00\",\"dateModified\":\"2026-09-01T18:12:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/#\\\/schema\\\/person\\\/03f465f334ef2578c99da01cb4b166bc\"},\"description\":\"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/trunk-based-development\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trunk-based Development\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/#website\",\"url\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/\",\"name\":\"Wingify Glossary\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wingify.com\\\/glossary\\\/#\\\/schema\\\/person\\\/03f465f334ef2578c99da01cb4b166bc\",\"name\":\"Ketan Pande\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g\",\"caption\":\"Ketan Pande\"},\"description\":\"I\u2019m a content marketer at VWO, reading and writing on topics like behavior analytics, conversion rate optimization, and experimentation. Prior to VWO, I built and managed my own website where I discussed business growth and career. When I\u2019m not at my desk, you\u2019ll find me exploring nature trails, cycling through the countryside, or seeking out new physical challenges\u2014those are my ideas of a good time! Want to start a conversation with me? Just mention BIRDS, and you\u2019ll have my undivided attention.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/ketanpande\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trunk-based Development - Wingify Glossary","description":"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wingify.com\/glossary\/trunk-based-development\/","og_locale":"en_US","og_type":"article","og_title":"Trunk-based Development - Wingify Glossary","og_description":"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.","og_url":"https:\/\/wingify.com\/glossary\/trunk-based-development\/","og_site_name":"Wingify Glossary","article_published_time":"2026-08-26T07:36:20+00:00","article_modified_time":"2026-09-01T18:12:44+00:00","author":"Ketan Pande","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/#article","isPartOf":{"@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/"},"author":{"name":"Ketan Pande","@id":"https:\/\/wingify.com\/glossary\/#\/schema\/person\/03f465f334ef2578c99da01cb4b166bc"},"headline":"Trunk-based Development","datePublished":"2026-08-26T07:36:20+00:00","dateModified":"2026-09-01T18:12:44+00:00","mainEntityOfPage":{"@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/"},"wordCount":1021,"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/","url":"https:\/\/wingify.com\/glossary\/trunk-based-development\/","name":"Trunk-based Development - Wingify Glossary","isPartOf":{"@id":"https:\/\/wingify.com\/glossary\/#website"},"datePublished":"2026-08-26T07:36:20+00:00","dateModified":"2026-09-01T18:12:44+00:00","author":{"@id":"https:\/\/wingify.com\/glossary\/#\/schema\/person\/03f465f334ef2578c99da01cb4b166bc"},"description":"Trunk-based development is a practice in which developers divide their work into small batches and later merge their work into a shared trunk or mainline at least once daily.","breadcrumb":{"@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wingify.com\/glossary\/trunk-based-development\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wingify.com\/glossary\/trunk-based-development\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wingify.com\/glossary\/"},{"@type":"ListItem","position":2,"name":"Trunk-based Development"}]},{"@type":"WebSite","@id":"https:\/\/wingify.com\/glossary\/#website","url":"https:\/\/wingify.com\/glossary\/","name":"Wingify Glossary","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wingify.com\/glossary\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/wingify.com\/glossary\/#\/schema\/person\/03f465f334ef2578c99da01cb4b166bc","name":"Ketan Pande","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a150f99e137fa8b8a1faa47dfb02da4d31ea45804933f9ce350ba444afbfe9c6?s=96&d=mm&r=g","caption":"Ketan Pande"},"description":"I\u2019m a content marketer at VWO, reading and writing on topics like behavior analytics, conversion rate optimization, and experimentation. Prior to VWO, I built and managed my own website where I discussed business growth and career. When I\u2019m not at my desk, you\u2019ll find me exploring nature trails, cycling through the countryside, or seeking out new physical challenges\u2014those are my ideas of a good time! Want to start a conversation with me? Just mention BIRDS, and you\u2019ll have my undivided attention.","sameAs":["https:\/\/www.linkedin.com\/in\/ketanpande\/"]}]}},"_links":{"self":[{"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/posts\/6317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/users\/801"}],"replies":[{"embeddable":true,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/comments?post=6317"}],"version-history":[{"count":1,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/posts\/6317\/revisions"}],"predecessor-version":[{"id":6318,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/posts\/6317\/revisions\/6318"}],"wp:attachment":[{"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/media?parent=6317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/categories?post=6317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wingify.com\/glossary\/wp-json\/wp\/v2\/tags?post=6317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}