[{"data":1,"prerenderedAt":1060},["ShallowReactive",2],{"/blog/what-is-gitlab-flow":3,"navigation-en-us":276,"banner-en-us":703,"footer-en-us":712,"blog-post-authors-en-us-Suri Patel":957,"blog-related-posts-en-us-what-is-gitlab-flow":972,"blog-promotions-en-us":997,"next-steps-en-us":1051},{"id":4,"title":5,"authors":6,"body":8,"category":254,"date":255,"description":256,"extension":257,"externalUrl":258,"faq":258,"featured":259,"heroImage":260,"meta":261,"navigation":262,"path":263,"seo":264,"slug":268,"stem":269,"tags":270,"template":274,"updatedDate":258,"__hash__":275},"blogPosts/en-us/blog/what-is-gitlab-flow.md","The problem with Git flow",[7],"Suri Patel",{"type":9,"value":10,"toc":245},"minimark",[11,16,27,38,42,45,67,70,74,77,84,87,90,110,117,121,129,142,148,157,163,167,179,211,215,218,231],[12,13,15],"script",{"type":14},"application/ld+json","\n  {\n    \"@context\": \"https://schema.org\",\n    \"@type\": \"BlogPosting\",\n    \"mainEntityOfPage\": {\n      \"@type\": \"WebPage\",\n      \"@id\": \"https://about.gitlab.com/blog/what-is-gitlab-flow/\"\n    },\n    \"headline\": \"The problem with Git flow\",\n    \"description\": \"Learn why Git flow complicates the lifecycle and discover an alternative to streamline development.\",\n    \"image\": \"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782399315/blog/Content%20Images/whatisgitlabflow.jpg\",\n    \"author\": {\n      \"@type\": \"Organization\",\n      \"name\": \"GitLab\"\n    },\n    \"publisher\": {\n      \"@type\": \"Organization\",\n      \"name\": \"\",\n      \"logo\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"\"\n      }\n    },\n    \"datePublished\": \"2020-03-05\"\n  }\n  ",[17,18,19,20,26],"p",{},"Sometimes, you can have too much of a good thing. That’s certainly true with ",[21,22,25],"a",{"href":23,"rel":24},"https://nvie.com/posts/a-successful-git-branching-model/",[],"Git flow",", a well-known software development workflow that offers several options but can bog down users.",[17,28,29,30,34,35,37],{},"We developed ",[21,31,33],{"href":32},"/topics/version-control/what-is-gitlab-flow/","GitLab Flow"," as the solution to eliminate messy complexity and streamline the development process. ",[21,36,33],{"href":32}," brings issue tracking to the Git workflow, simplifying the process and removing confusion.",[39,40,5],"h2",{"id":41},"the-problem-with-git-flow",[17,43,44],{},"To understand how GitLab Flow works, it’s helpful to start by looking at the problems it tries to solve. In Git flow, there are two main pain points, both of which involve unnecessary branch switching.",[17,46,47,48,52,53,56,57,60,61,66],{},"Git flow forces developers to use the ",[49,50,51],"code",{},"develop"," branch rather than the ",[49,54,55],{},"master"," or default branch. Because most tools default to using the master, there’s a significant amount of branch switching involved. Another frustrating aspect are ",[49,58,59],{},"release"," and ",[21,62,65],{"href":63,"rel":64},"https://stackoverflow.com/questions/46729813/how-to-use-a-Gitflow-hotfix-branch",[],"hotfix"," branches, which are overkill for most organizations and completely unnecessary in companies practicing continuous integration and continuous delivery.",[17,68,69],{},"That brings us to GitLab Flow, a simpler workflow and branching model that keeps everything simple and inclusive.",[39,71,73],{"id":72},"gitlab-flow-a-streamlined-branching-strategy","GitLab Flow: a streamlined branching strategy",[17,75,76],{},"GitLab Flow is a simpler alternative to Git flow that combines feature-driven development and feature branches with issue tracking. GitLab Flow integrates the Git workflow with an issue tracking system, offering a simple, transparent, and effective way to work with Git.",[17,78,79,80,83],{},"GitLab Flow is an approach to make the relationship between the code and the issue tracker more transparent. Each change to the codebase starts with an issue in the issue tracking system. When you’re done coding or want to discuss the code, you can open a merge request. When the code is ready, the reviewer will merge the branch into master, creating a merge commit that makes this event easily visible in the future. Using GitLab Flow, teams can deploy a new version of code by merging master into a ",[49,81,82],{},"production"," branch, enabling them to quickly identify what code is in the production environment. In this workflow, commits only flow downstream, ensuring that everything is tested in all environments.",[17,85,86],{},"GitLab Flow prevents the overhead of releasing, tagging, and merging that accompanies Git flow.",[17,88,89],{},"GitLab Flow in a nutshell:",[91,92,93,97,107],"ul",{},[94,95,96],"li",{},"All features and fixes first go to master",[94,98,99,100,102,103,106],{},"Allows for ",[49,101,82],{}," or ",[49,104,105],{},"stable"," branches",[94,108,109],{},"Bug fixes/hotfix patches are cherry-picked from master",[17,111,112,113],{},"Read more on here ",[21,114,116],{"href":115},"/topics/version-control/what-are-gitlab-flow-best-practices/","GitLab Flow best practicies",[39,118,120],{"id":119},"breaking-down-the-10-stages-of-software-development","Breaking down the 10 stages of software development",[17,122,123,124,128],{},"GitLab Flow is a way to move from the idea stage to production, all while keeping everyone informed and productive. We identified ",[21,125,127],{"href":126},"/topics/version-control/what-is-gitlab-flow/#stages-of-software-development","10 key stages"," of the development process that must happen in order for software to get into production. GitLab Flow makes it easy to account for all of them, while continuing to provide full visibility into the development lifecycle.",[17,130,131,132,135,136,138,139,141],{},"Broadly speaking, GitLab Flow is broken down into three main areas: ",[49,133,134],{},"feature"," branch, ",[49,137,82],{}," branch, and ",[49,140,59],{}," branch.",[17,143,144,145,147],{},"A ",[49,146,134],{}," branch is where the serious development work occurs. A developer creates a feature or bug fix branch and does all the work there rather than on a master branch. Once the work is complete, the developer creates a merge request to merge the work into the master branch.",[17,149,150,151,153,154,156],{},"The ",[49,152,82],{}," branch is essentially a monolith – a single long-running production ",[49,155,59],{}," branch rather than individual branches. It’s possible to create a tag for each deployable version to keep track of those details easily.",[17,158,159,160,162],{},"The last piece, the ",[49,161,59],{}," branch, is key if you release software to customers. With every new release, you’ll create a stable branch from master and decide on a tag. If you need to do a patch release, be sure to cherry-pick critical bug fixes first, and don’t commit them directly to the stable or long-lived branch.",[39,164,166],{"id":165},"follow-the-rules","Follow the rules",[17,168,169,170,173,174,178],{},"Want to get the most out of GitLab Flow? Our CEO Sid Sijbrandij came up with ",[21,171,172],{"href":115},"11 rules teams should always follow to achieve maximum efficiency",". The article is worth a read in its entirety, but here are a few rules that are timely reminders of the importance of testing, even in a ",[21,175,177],{"href":176},"/solutions/continuous-integration/","CI environment",":",[91,180,181,191,202],{},[94,182,183,187,188,190],{},[184,185,186],"strong",{},"Test all commits",": Don’t wait to test until everything has been merged into ",[49,189,55],{},". Test commits along the way to catch problems earlier in the process.",[94,192,193,201],{},[184,194,195,196,200],{},"And run ",[197,198,199],"em",{},"all"," tests on all the commits",", even if you have to run tests in parallel.",[94,203,204,210],{},[184,205,206,207,209],{},"Code reviews > merging into ",[49,208,55],{},"."," Why wait? \"Don’t test everything at the end of the week,\" Sid writes. \"Do it on the spot, because you'll be more likely to catch things that could cause problems, and others will also be working to come up with solutions.\"",[39,212,214],{"id":213},"take-a-deep-dive","Take a deep dive",[17,216,217],{},"Take a look at GitLab Flow in action! 🍿",[219,220,223,224],"figure",{"className":221},[222],"video_container","\n  ",[225,226,230],"iframe",{"src":227,"frameBorder":228,"allowFullScreen":229},"https://www.youtube-nocookie.com/embed/InKNIvky2KE","0","true"," ",[17,232,233,234,239,240],{},"Cover image by ",[21,235,238],{"href":236,"rel":237},"https://unsplash.com/@bracht?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText",[],"Fabio Bracht"," on ",[21,241,244],{"href":242,"rel":243},"https://unsplash.com/photos/_z0DiiaIhB4",[],"Unsplash",{"title":246,"searchDepth":247,"depth":247,"links":248},"",2,[249,250,251,252,253],{"id":41,"depth":247,"text":5},{"id":72,"depth":247,"text":73},{"id":119,"depth":247,"text":120},{"id":165,"depth":247,"text":166},{"id":213,"depth":247,"text":214},"open-source","2020-03-05","Learn why Git flow complicates the lifecycle and discover an alternative to streamline development.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749681121/Blog/Hero%20Images/whatisgitlabflow.jpg",{},true,"/en-us/blog/what-is-gitlab-flow",{"title":5,"description":256,"ogTitle":5,"ogDescription":256,"noIndex":259,"ogImage":260,"ogUrl":265,"ogSiteName":266,"ogType":267,"canonicalUrls":265},"https://about.gitlab.com/blog/what-is-gitlab-flow","https://about.gitlab.com","article","what-is-gitlab-flow","en-us/blog/what-is-gitlab-flow",[271,272,273],"git","workflow","code review","BlogPost","HVv_PXWw_qxYIGCwE2lg5G_xuqlAFLTeP3BUm1pJkD0",{"logo":277,"freeTrial":282,"sales":287,"login":292,"items":297,"search":623,"minimal":654,"duo":673,"switchNav":682,"pricingDeployment":693},{"config":278},{"href":279,"dataGaName":280,"dataGaLocation":281},"/","gitlab logo","header",{"text":283,"config":284},"Get free trial",{"href":285,"dataGaName":286,"dataGaLocation":281},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":288,"config":289},"Request a demo",{"href":290,"dataGaName":291,"dataGaLocation":281},"/sales/?contact-topic=request-demo","sales",{"text":293,"config":294},"Sign in",{"href":295,"dataGaName":296,"dataGaLocation":281},"https://gitlab.com/users/sign_in/","sign in",[298,327,426,431,545,601],{"text":299,"config":300,"menu":302},"Platform",{"dataNavLevelOne":301},"platform",{"type":303,"columns":304},"cards",[305,311,319],{"title":299,"description":306,"link":307},"The intelligent orchestration platform for DevSecOps",{"text":308,"config":309},"Explore our Platform",{"href":310,"dataGaName":301,"dataGaLocation":281},"/platform/",{"title":312,"description":313,"link":314},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":315,"config":316},"Meet GitLab Duo",{"href":317,"dataGaName":318,"dataGaLocation":281},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":320,"description":321,"link":322},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":323,"config":324},"Learn more",{"href":325,"dataGaName":326,"dataGaLocation":281},"/why-gitlab/","why gitlab",{"text":328,"left":262,"config":329,"menu":331},"Product",{"dataNavLevelOne":330},"solutions",{"type":332,"link":333,"columns":337,"feature":405},"lists",{"text":334,"config":335},"View all Solutions",{"href":336,"dataGaName":330,"dataGaLocation":281},"/solutions/",[338,361,384],{"title":339,"description":340,"link":341,"items":346},"Automation","CI/CD and automation to accelerate deployment",{"config":342},{"icon":343,"href":344,"dataGaName":345,"dataGaLocation":281},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[347,350,353,357],{"text":348,"config":349},"CI/CD",{"href":176,"dataGaLocation":281,"dataGaName":348},{"text":312,"config":351},{"href":317,"dataGaLocation":281,"dataGaName":352},"gitlab duo agent platform - product menu",{"text":354,"config":355},"Source Code Management",{"href":356,"dataGaLocation":281,"dataGaName":354},"/solutions/source-code-management/",{"text":358,"config":359},"Automated Software Delivery",{"href":344,"dataGaLocation":281,"dataGaName":360},"Automated software delivery",{"title":362,"description":363,"link":364,"items":369},"Security","Deliver code faster without compromising security",{"config":365},{"href":366,"dataGaName":367,"dataGaLocation":281,"icon":368},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[370,374,379],{"text":371,"config":372},"Application Security Testing",{"href":366,"dataGaName":373,"dataGaLocation":281},"Application security testing",{"text":375,"config":376},"Software Supply Chain Security",{"href":377,"dataGaLocation":281,"dataGaName":378},"/solutions/supply-chain/","Software supply chain security",{"text":380,"config":381},"Software Compliance",{"href":382,"dataGaName":383,"dataGaLocation":281},"/solutions/software-compliance/","software compliance",{"title":385,"link":386,"items":391},"Measurement",{"config":387},{"icon":388,"href":389,"dataGaName":390,"dataGaLocation":281},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[392,396,400],{"text":393,"config":394},"Visibility & Measurement",{"href":389,"dataGaLocation":281,"dataGaName":395},"Visibility and Measurement",{"text":397,"config":398},"Value Stream Management",{"href":399,"dataGaLocation":281,"dataGaName":397},"/solutions/value-stream-management/",{"text":401,"config":402},"Analytics & Insights",{"href":403,"dataGaLocation":281,"dataGaName":404},"/solutions/analytics-and-insights/","Analytics and insights",{"title":406,"type":332,"items":407},"GitLab for",[408,414,420],{"text":409,"config":410},"Enterprise",{"icon":411,"href":412,"dataGaLocation":281,"dataGaName":413},"Building","/enterprise/","enterprise",{"text":415,"config":416},"Small Business",{"icon":417,"href":418,"dataGaLocation":281,"dataGaName":419},"Work","/small-business/","small business",{"text":421,"config":422},"Public Sector",{"icon":423,"href":424,"dataGaLocation":281,"dataGaName":425},"Organization","/solutions/public-sector/","public sector",{"text":427,"config":428},"Pricing",{"href":429,"dataGaName":430,"dataGaLocation":281,"dataNavLevelOne":430},"/pricing/","pricing",{"text":432,"config":433,"menu":435},"Resources",{"dataNavLevelOne":434},"resources",{"type":332,"link":436,"columns":440,"feature":534},{"text":437,"config":438},"View all resources",{"href":439,"dataGaName":434,"dataGaLocation":281},"/resources/",[441,474,501],{"title":442,"items":443},"Getting started",[444,449,454,459,464,469],{"text":445,"config":446},"Install",{"href":447,"dataGaName":448,"dataGaLocation":281},"/install/","install",{"text":450,"config":451},"Quick start guides",{"href":452,"dataGaName":453,"dataGaLocation":281},"/get-started/","quick setup checklists",{"text":455,"config":456},"Learn",{"href":457,"dataGaLocation":281,"dataGaName":458},"https://university.gitlab.com/","learn",{"text":460,"config":461},"Product documentation",{"href":462,"dataGaName":463,"dataGaLocation":281},"https://docs.gitlab.com/","product documentation",{"text":465,"config":466},"Best practice videos",{"href":467,"dataGaName":468,"dataGaLocation":281},"/getting-started-videos/","best practice videos",{"text":470,"config":471},"Integrations",{"href":472,"dataGaName":473,"dataGaLocation":281},"/integrations/","integrations",{"title":475,"items":476},"Discover",[477,482,487,492,496],{"text":478,"config":479},"Customer success stories",{"href":480,"dataGaName":481,"dataGaLocation":281},"/customers/","customer success stories",{"text":483,"config":484},"Blog",{"href":485,"dataGaName":486,"dataGaLocation":281},"/blog/","blog",{"text":488,"config":489},"Demo Hub",{"href":490,"dataGaName":491,"dataGaLocation":281},"/demo-hub/","demo hub",{"text":493,"config":494},"The Source",{"href":495,"dataGaName":486,"dataGaLocation":281},"/the-source/",{"text":497,"config":498},"Remote",{"href":499,"dataGaName":500,"dataGaLocation":281},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":502,"items":503},"Connect",[504,509,514,519,524,529],{"text":505,"config":506},"GitLab Services",{"href":507,"dataGaName":508,"dataGaLocation":281},"/services/","services",{"text":510,"config":511},"Contribute",{"href":512,"dataGaName":513,"dataGaLocation":281},"https://contributors.gitlab.com","contribute",{"text":515,"config":516},"Community",{"href":517,"dataGaName":518,"dataGaLocation":281},"/community/","community",{"text":520,"config":521},"Forum",{"href":522,"dataGaName":523,"dataGaLocation":281},"https://forum.gitlab.com/","forum",{"text":525,"config":526},"Events",{"href":527,"dataGaName":528,"dataGaLocation":281},"/events/","events",{"text":530,"config":531},"Partners",{"href":532,"dataGaName":533,"dataGaLocation":281},"/partners/","partners",{"config":535,"title":538,"text":539,"link":540},{"background":536,"textColor":537},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":541,"config":542},"Read the latest",{"href":543,"dataGaName":544,"dataGaLocation":281},"/whats-new/","whats new",{"text":546,"config":547,"menu":549},"Company",{"dataNavLevelOne":548},"company",{"type":332,"columns":550},[551],{"items":552},[553,558,564,566,571,576,581,586,591,596],{"text":554,"config":555},"About",{"href":556,"dataGaName":557,"dataGaLocation":281},"/company/","about",{"text":559,"config":560,"footerGa":563},"Jobs",{"href":561,"dataGaName":562,"dataGaLocation":281},"/jobs/","jobs",{"dataGaName":562},{"text":525,"config":565},{"href":527,"dataGaName":528,"dataGaLocation":281},{"text":567,"config":568},"Leadership",{"href":569,"dataGaName":570,"dataGaLocation":281},"/company/team/e-group/","leadership",{"text":572,"config":573},"Handbook",{"href":574,"dataGaName":575,"dataGaLocation":281},"https://handbook.gitlab.com/","handbook",{"text":577,"config":578},"Investor relations",{"href":579,"dataGaName":580,"dataGaLocation":281},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":582,"config":583},"Trust Center",{"href":584,"dataGaName":585,"dataGaLocation":281},"/security/","trust center",{"text":587,"config":588},"AI Transparency Center",{"href":589,"dataGaName":590,"dataGaLocation":281},"/ai-transparency-center/","ai transparency center",{"text":592,"config":593},"Newsletter",{"href":594,"dataGaName":595,"dataGaLocation":281},"/company/contact/#contact-forms","newsletter",{"text":597,"config":598},"Press",{"href":599,"dataGaName":600,"dataGaLocation":281},"/press/","press",{"text":602,"config":603,"menu":604},"Contact us",{"dataNavLevelOne":548},{"type":332,"columns":605},[606],{"items":607},[608,613,618],{"text":609,"config":610},"Talk to sales",{"href":611,"dataGaName":612,"dataGaLocation":281},"/sales/","talk to sales",{"text":614,"config":615},"Support portal",{"href":616,"dataGaName":617,"dataGaLocation":281},"https://support.gitlab.com/hc/en-us","support portal",{"text":619,"config":620},"Customer portal",{"href":621,"dataGaName":622,"dataGaLocation":281},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":624,"login":625,"suggestions":632},"Close",{"text":626,"link":627},"To search repositories and projects, login to",{"text":628,"config":629},"gitlab.com",{"href":295,"dataGaName":630,"dataGaLocation":631},"search login","search",{"text":633,"default":634},"Suggestions",[635,637,641,643,647,651],{"text":312,"config":636},{"href":317,"dataGaName":312,"dataGaLocation":631},{"text":638,"config":639},"Code Suggestions (AI)",{"href":640,"dataGaName":638,"dataGaLocation":631},"/solutions/code-suggestions/",{"text":348,"config":642},{"href":176,"dataGaName":348,"dataGaLocation":631},{"text":644,"config":645},"GitLab on AWS",{"href":646,"dataGaName":644,"dataGaLocation":631},"/partners/technology-partners/aws/",{"text":648,"config":649},"GitLab on Google Cloud",{"href":650,"dataGaName":648,"dataGaLocation":631},"/partners/technology-partners/google-cloud-platform/",{"text":652,"config":653},"Why GitLab?",{"href":325,"dataGaName":652,"dataGaLocation":631},{"freeTrial":655,"mobileIcon":660,"desktopIcon":665,"secondaryButton":668},{"text":656,"config":657},"Start free trial",{"href":658,"dataGaName":286,"dataGaLocation":659},"https://gitlab.com/-/trials/new/","nav",{"altText":661,"config":662},"Gitlab Icon",{"src":663,"dataGaName":664,"dataGaLocation":659},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":661,"config":666},{"src":667,"dataGaName":664,"dataGaLocation":659},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":669,"config":670},"Get Started",{"href":671,"dataGaName":672,"dataGaLocation":659},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":674,"mobileIcon":678,"desktopIcon":680},{"text":675,"config":676},"Learn more about GitLab Duo",{"href":317,"dataGaName":677,"dataGaLocation":659},"gitlab duo",{"altText":661,"config":679},{"src":663,"dataGaName":664,"dataGaLocation":659},{"altText":661,"config":681},{"src":667,"dataGaName":664,"dataGaLocation":659},{"button":683,"mobileIcon":688,"desktopIcon":690},{"text":684,"config":685},"/switch",{"href":686,"dataGaName":687,"dataGaLocation":659},"#contact","switch",{"altText":661,"config":689},{"src":663,"dataGaName":664,"dataGaLocation":659},{"altText":661,"config":691},{"src":692,"dataGaName":664,"dataGaLocation":659},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":694,"mobileIcon":699,"desktopIcon":701},{"text":695,"config":696},"Back to pricing",{"href":429,"dataGaName":697,"dataGaLocation":659,"icon":698},"back to pricing","GoBack",{"altText":661,"config":700},{"src":663,"dataGaName":664,"dataGaLocation":659},{"altText":661,"config":702},{"src":667,"dataGaName":664,"dataGaLocation":659},{"title":704,"titleMobile":705,"button":706,"config":711},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":323,"config":707},{"href":708,"dataGaName":709,"dataGaLocation":710},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":59,"disabled":259},{"data":713},{"text":714,"source":715,"edit":721,"contribute":726,"config":731,"items":736,"minimal":946},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":716,"config":717},"View page source",{"href":718,"dataGaName":719,"dataGaLocation":720},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":722,"config":723},"Edit this page",{"href":724,"dataGaName":725,"dataGaLocation":720},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":727,"config":728},"Please contribute",{"href":729,"dataGaName":730,"dataGaLocation":720},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":732,"facebook":733,"youtube":734,"linkedin":735},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[737,784,838,882,914],{"title":427,"links":738,"subMenu":753},[739,743,748],{"text":740,"config":741},"View plans",{"href":429,"dataGaName":742,"dataGaLocation":720},"view plans",{"text":744,"config":745},"Why Premium?",{"href":746,"dataGaName":747,"dataGaLocation":720},"/pricing/premium/","why premium",{"text":749,"config":750},"Why Ultimate?",{"href":751,"dataGaName":752,"dataGaLocation":720},"/pricing/ultimate/","why ultimate",[754],{"title":755,"links":756},"Contact Us",[757,760,762,764,769,774,779],{"text":758,"config":759},"Contact sales",{"href":611,"dataGaName":291,"dataGaLocation":720},{"text":614,"config":761},{"href":616,"dataGaName":617,"dataGaLocation":720},{"text":619,"config":763},{"href":621,"dataGaName":622,"dataGaLocation":720},{"text":765,"config":766},"Status",{"href":767,"dataGaName":768,"dataGaLocation":720},"https://status.gitlab.com/","status",{"text":770,"config":771},"Terms of use",{"href":772,"dataGaName":773,"dataGaLocation":720},"/terms/","terms of use",{"text":775,"config":776},"Privacy statement",{"href":777,"dataGaName":778,"dataGaLocation":720},"/privacy/","privacy statement",{"text":780,"config":781},"Cookie preferences",{"dataGaName":782,"dataGaLocation":720,"id":783,"isOneTrustButton":262},"cookie preferences","ot-sdk-btn",{"title":328,"links":785,"subMenu":794},[786,790],{"text":787,"config":788},"DevSecOps platform",{"href":310,"dataGaName":789,"dataGaLocation":720},"devsecops platform",{"text":791,"config":792},"AI-Assisted Development",{"href":317,"dataGaName":793,"dataGaLocation":720},"ai-assisted development",[795],{"title":796,"links":797},"Topics",[798,803,808,813,818,823,828,833],{"text":799,"config":800},"CICD",{"href":801,"dataGaName":802,"dataGaLocation":720},"/topics/ci-cd/","cicd",{"text":804,"config":805},"GitOps",{"href":806,"dataGaName":807,"dataGaLocation":720},"/topics/gitops/","gitops",{"text":809,"config":810},"DevOps",{"href":811,"dataGaName":812,"dataGaLocation":720},"/topics/devops/","devops",{"text":814,"config":815},"Version Control",{"href":816,"dataGaName":817,"dataGaLocation":720},"/topics/version-control/","version control",{"text":819,"config":820},"DevSecOps",{"href":821,"dataGaName":822,"dataGaLocation":720},"/topics/devsecops/","devsecops",{"text":824,"config":825},"Cloud Native",{"href":826,"dataGaName":827,"dataGaLocation":720},"/topics/cloud-native/","cloud native",{"text":829,"config":830},"AI for Coding",{"href":831,"dataGaName":832,"dataGaLocation":720},"/topics/devops/ai-for-coding/","ai for coding",{"text":834,"config":835},"Agentic AI",{"href":836,"dataGaName":837,"dataGaLocation":720},"/topics/agentic-ai/","agentic ai",{"title":839,"links":840},"Solutions",[841,843,845,850,854,857,861,864,866,869,872,877],{"text":371,"config":842},{"href":366,"dataGaName":371,"dataGaLocation":720},{"text":360,"config":844},{"href":344,"dataGaName":345,"dataGaLocation":720},{"text":846,"config":847},"Agile development",{"href":848,"dataGaName":849,"dataGaLocation":720},"/solutions/agile-delivery/","agile delivery",{"text":851,"config":852},"SCM",{"href":356,"dataGaName":853,"dataGaLocation":720},"source code management",{"text":799,"config":855},{"href":176,"dataGaName":856,"dataGaLocation":720},"continuous integration & delivery",{"text":858,"config":859},"Value stream management",{"href":399,"dataGaName":860,"dataGaLocation":720},"value stream management",{"text":804,"config":862},{"href":863,"dataGaName":807,"dataGaLocation":720},"/solutions/gitops/",{"text":409,"config":865},{"href":412,"dataGaName":413,"dataGaLocation":720},{"text":867,"config":868},"Small business",{"href":418,"dataGaName":419,"dataGaLocation":720},{"text":870,"config":871},"Public sector",{"href":424,"dataGaName":425,"dataGaLocation":720},{"text":873,"config":874},"Education",{"href":875,"dataGaName":876,"dataGaLocation":720},"/solutions/education/","education",{"text":878,"config":879},"Financial services",{"href":880,"dataGaName":881,"dataGaLocation":720},"/solutions/finance/","financial services",{"title":432,"links":883},[884,886,888,890,893,895,898,900,902,904,906,908,910,912],{"text":445,"config":885},{"href":447,"dataGaName":448,"dataGaLocation":720},{"text":450,"config":887},{"href":452,"dataGaName":453,"dataGaLocation":720},{"text":455,"config":889},{"href":457,"dataGaName":458,"dataGaLocation":720},{"text":460,"config":891},{"href":462,"dataGaName":892,"dataGaLocation":720},"docs",{"text":483,"config":894},{"href":485,"dataGaName":486,"dataGaLocation":720},{"text":896,"config":897},"What's new",{"href":543,"dataGaName":544,"dataGaLocation":720},{"text":478,"config":899},{"href":480,"dataGaName":481,"dataGaLocation":720},{"text":497,"config":901},{"href":499,"dataGaName":500,"dataGaLocation":720},{"text":505,"config":903},{"href":507,"dataGaName":508,"dataGaLocation":720},{"text":510,"config":905},{"href":512,"dataGaName":513,"dataGaLocation":720},{"text":515,"config":907},{"href":517,"dataGaName":518,"dataGaLocation":720},{"text":520,"config":909},{"href":522,"dataGaName":523,"dataGaLocation":720},{"text":525,"config":911},{"href":527,"dataGaName":528,"dataGaLocation":720},{"text":530,"config":913},{"href":532,"dataGaName":533,"dataGaLocation":720},{"title":546,"links":915},[916,918,920,922,924,926,930,935,937,939,941],{"text":554,"config":917},{"href":556,"dataGaName":548,"dataGaLocation":720},{"text":559,"config":919},{"href":561,"dataGaName":562,"dataGaLocation":720},{"text":567,"config":921},{"href":569,"dataGaName":570,"dataGaLocation":720},{"text":572,"config":923},{"href":574,"dataGaName":575,"dataGaLocation":720},{"text":577,"config":925},{"href":579,"dataGaName":580,"dataGaLocation":720},{"text":927,"config":928},"Sustainability",{"href":929,"dataGaName":927,"dataGaLocation":720},"/sustainability/",{"text":931,"config":932},"Diversity, inclusion and belonging (DIB)",{"href":933,"dataGaName":934,"dataGaLocation":720},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":582,"config":936},{"href":584,"dataGaName":585,"dataGaLocation":720},{"text":592,"config":938},{"href":594,"dataGaName":595,"dataGaLocation":720},{"text":597,"config":940},{"href":599,"dataGaName":600,"dataGaLocation":720},{"text":942,"config":943},"Modern Slavery Transparency Statement",{"href":944,"dataGaName":945,"dataGaLocation":720},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":947},[948,951,954],{"text":949,"config":950},"Terms",{"href":772,"dataGaName":773,"dataGaLocation":720},{"text":952,"config":953},"Cookies",{"dataGaName":782,"dataGaLocation":720,"id":783,"isOneTrustButton":262},{"text":955,"config":956},"Privacy",{"href":777,"dataGaName":778,"dataGaLocation":720},[958],{"id":959,"title":7,"body":258,"config":960,"content":962,"description":258,"extension":966,"meta":967,"navigation":262,"path":968,"seo":969,"stem":970,"__hash__":971},"blogAuthors/en-us/blog/authors/suri-patel.yml",{"template":961},"BlogAuthor",{"name":7,"config":963},{"headshot":964,"ctfId":965},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","suripatel","yml",{},"/en-us/blog/authors/suri-patel",{},"en-us/blog/authors/suri-patel","6uYSrzx-VYqO5jfherOjew8qtD9VYm7TE1H5W0GKC4I",[973,981,989],{"title":974,"description":975,"heroImage":976,"category":254,"date":977,"authors":978,"slug":980,"externalUrl":258},"What's new in Git 2.55.0?","Learn about the new features and changes in Git 2.55, including a new git-history(1) fixup command, an fsmonitor daemon for Linux, pushing to remote groups, and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782732487/ztwgrvlolpifo01vj8qc.png","2026-06-29",[979],"Toon Claes","whats-new-in-git-2-55-0",{"title":982,"description":983,"heroImage":984,"category":254,"date":985,"authors":986,"slug":988,"externalUrl":258},"GitLab AI Hackathon 2026: Meet the winners","Nearly 7,000 developers built 600+ AI agents and flows on GitLab Duo Agent Platform. Find out who won and what they created.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-04-22",[987],"Nick Veenhof","gitlab-ai-hackathon-2026-meet-the-winners",{"title":990,"description":991,"heroImage":992,"category":254,"date":993,"authors":994,"slug":996,"externalUrl":258},"What’s new in Git 2.54.0?","Learn about release contributions, including new repository maintenance, a new command to edit commit history, a replacement for git-sizer(1), and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782734716/ztwgrvlolpifo01vj8qc.png","2026-04-20",[995],"Patrick Steinhardt","whats-new-in-git-2-54-0",{"promotions":998},[999,1013,1025,1037],{"id":1000,"categories":1001,"header":1003,"text":1004,"button":1005,"image":1010},"ai-modernization",[1002],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":1006,"config":1007},"Get your AI maturity score",{"href":1008,"dataGaName":1009,"dataGaLocation":486},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":1011},{"src":1012},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1014,"categories":1015,"header":1017,"text":1004,"button":1018,"image":1022},"devops-modernization",[1016,822],"product","Are you just managing tools or shipping innovation?",{"text":1019,"config":1020},"Get your DevOps maturity score",{"href":1021,"dataGaName":1009,"dataGaLocation":486},"/assessments/devops-modernization-assessment/",{"config":1023},{"src":1024},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1026,"categories":1027,"header":1029,"text":1004,"button":1030,"image":1034},"security-modernization",[1028],"security","Are you trading speed for security?",{"text":1031,"config":1032},"Get your security maturity score",{"href":1033,"dataGaName":1009,"dataGaLocation":486},"/assessments/security-modernization-assessment/",{"config":1035},{"src":1036},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1038,"paths":1039,"header":1042,"text":1043,"button":1044,"image":1049},"github-azure-migration",[1040,1041],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":1045,"config":1046},"See how GitLab compares to GitHub",{"href":1047,"dataGaName":1048,"dataGaLocation":486},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1050},{"src":1024},{"header":1052,"blurb":1053,"button":1054,"secondaryButton":1058},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1055,"config":1056},"Get your free trial",{"href":1057,"dataGaName":286,"dataGaLocation":134},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/",{"text":758,"config":1059},{"href":611,"dataGaName":291,"dataGaLocation":134},1786734913230]