[{"data":1,"prerenderedAt":837},["ShallowReactive",2],{"/en-us/topics/version-control/what-are-gitlab-flow-best-practices/":3,"navigation-en-us":167,"banner-en-us":595,"footer-en-us":612,"next-steps-en-us":822},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":161,"_type":162,"title":7,"_source":163,"_file":164,"_stem":165,"_extension":166},"/en-us/topics/version-control/what-are-gitlab-flow-best-practices","version-control",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10},"What are GitLab Flow best practices?","Using these best practices, software development teams can use GitLab Flow to software development.",[12,26,31,150,159],{"type":13,"componentName":13,"componentContent":14},"CommonBreadcrumbs",{"crumbs":15},[16,20,24],{"title":17,"config":18},"Topics",{"href":19},"/topics/",{"title":21,"config":22},"Version control",{"href":23},"/topics/version-control/",{"title":25},"What are gitlab flow best practices",{"type":27,"componentName":27,"componentContent":28},"CommonArticleHero",{"title":9,"text":10,"config":29},{"id":30,"twoColumns":6},"what-are-gitlab-flow-best-practices?",{"type":32,"componentName":32,"componentContent":33},"CommonSideNavigationWithTree",{"anchors":34,"components":81},{"text":35,"data":36},"On this page",[37,41,45,49,53,57,61,65,69,73,77],{"text":38,"config":39},"1. Use feature branches rather than direct commits on the main branch.",{"href":40},"#1-use-feature-branches-rather-than-direct-commits-on-the-main-branch",{"text":42,"config":43},"2. Test all commits, not only ones on the main branch.",{"href":44},"#2-test-all-commits-not-only-ones-on-the-main-branch",{"text":46,"config":47},"3. Run every test on all commits. (If tests run longer than 5 minutes, they can run in parallel.)",{"href":48},"#3-run-every-test-on-all-commits-if-tests-run-longer-than-5-minutes-they-can-run-in-parallel",{"text":50,"config":51},"4. Perform code reviews before merging into the main branch.",{"href":52},"#4-perform-code-reviews-before-merging-into-the-main-branch",{"text":54,"config":55},"5. Deployments are automatic based on branches or tags.",{"href":56},"#5-deployments-are-automatic-based-on-branches-or-tags",{"text":58,"config":59},"6. Tags are set by the user, not by CI.",{"href":60},"#6-tags-are-set-by-the-user-not-by-ci",{"text":62,"config":63},"7. Releases are based on tags.",{"href":64},"#7-releases-are-based-on-tags",{"text":66,"config":67},"8. Pushed commits are never rebased.",{"href":68},"#8-pushed-commits-are-never-rebased",{"text":70,"config":71},"9. Everyone starts from main and targets main.",{"href":72},"#9-everyone-starts-from-main-and-targets-main",{"text":74,"config":75},"10. Fix bugs in main first and release branches second.",{"href":76},"#10-fix-bugs-in-main-first-and-release-branches-second",{"text":78,"config":79},"11. Commit messages reflect intent.",{"href":80},"#11-commit-messages-reflect-intent",[82,87,92,97,102,107,112,117,122,127,132,137,142],{"type":83,"componentName":83,"componentContent":84},"TopicsCopy",{"text":85,"config":86},"When software development teams rush to accelerate delivery, they may end up with messy or complex workflows. Organizations that have transitioned from another [version control](/topics/version-control/) system are especially likely to deal with challenging processes that may slow down development. When teams use [GitLab Flow](/topics/version-control/what-is-gitlab-flow/), they can use feature driven development and feature branches with issue tracking to ensure every team member works efficiently. Using these GitLab Flow tips, software development teams can simplify the process and produce a more efficient and cleaner outcome.\n",{"id":7},{"type":83,"componentName":83,"componentContent":88},{"header":38,"text":89,"config":90},"Using feature branches is a simple way to develop and keep the [source code](/solutions/source-code-management/) clean. If a team has recently transitioned to Git from SVN, for example, they'll be used to a trunk-based workflow. When using Git, developers should create a branch for anything they're working on so that contributors can easily start the [code review process](/topics/version-control/what-is-code-review/) before merging.\n",{"id":91},"1-use-feature-branches-rather-than-direct-commits-on-the-main-branch",{"type":83,"componentName":83,"componentContent":93},{"header":42,"text":94,"config":95},"Some developers set up their CI to only test what has been merged into the `main` branch, but this is too late in the software development lifecyle, and everyone - from developers to product managers - should feel confident that the `main` branch always has green tests. It's inefficient for developers to have to test `main` before they start developing new features.\n",{"id":96},"2-test-all-commits-not-only-ones-on-the-main-branch",{"type":83,"componentName":83,"componentContent":98},{"header":46,"text":99,"config":100},"When working on a `feature` branch and adding new commits, run tests right away. If the tests are taking a long time, try running them in parallel. Do this server-side in merge requests, running the complete test suite. If there is a test suite for development and another only for new versions, it's worthwhile to set up \\[parallel] tests and run them all.\n",{"id":101},"3-run-every-test-on-all-commits-if-tests-run-longer-than-5-minutes-they-can-run-in-parallel",{"type":83,"componentName":83,"componentContent":103},{"header":50,"text":104,"config":105},"Don't test everything at the end of a week or project. Code reviews should take place as soon as possible, because developers are more likely to identify issues that could cause problems later in the lifecycle. Since they'll find problems earlier, they'll have an easier time creating solutions.\n",{"id":106},"4-perform-code-reviews-before-merging-into-the-main-branch",{"type":83,"componentName":83,"componentContent":108},{"header":54,"text":109,"config":110},"If developers don't want to deploy `main` every time, they can create a `production` branch. Rather than using a script or doing it manually, teams can use automation or have a specific branch that triggers a [production deploy](https://docs.gitlab.com/ee/ci/yaml/#environment).\n",{"id":111},"5-deployments-are-automatic-based-on-branches-or-tags",{"type":83,"componentName":83,"componentContent":113},{"header":58,"text":114,"config":115},"Developers should use `tags` so that the CI will perform an action rather than having the CI change the repository. If teams require detailed metrics, they should have a server report detailing new versions.\n",{"id":116},"6-tags-are-set-by-the-user-not-by-ci",{"type":83,"componentName":83,"componentContent":118},{"header":62,"text":119,"config":120},"Each tag should create a new release. This practice ensures a clean, efficient development environment.\n",{"id":121},"7-releases-are-based-on-tags",{"type":83,"componentName":83,"componentContent":123},{"header":66,"text":124,"config":125},"When pushing to a public branch, developers shouldn't rebase it, because that makes it difficult to identify the improvement and test results, while [cherry picking](https://git-scm.com/docs/git-cherry-pick). Sometimes this tip can be ignored when asking someone to squash and rebase at the end of a code review process to make something easier to revert. However, in general, the guideline is: Code should be clean, and history should be realistic.\n",{"id":126},"8-pushed-commits-are-never-rebased",{"type":83,"componentName":83,"componentContent":128},{"header":70,"text":129,"config":130},"This tip prevents long branches. Developers check out `main`, build a feature, create a merge request, and target `main` again. They should do a complete review **before** merging and eliminating any intermediate stages.\n",{"id":131},"9-everyone-starts-from-main-and-targets-main",{"type":83,"componentName":83,"componentContent":133},{"header":74,"text":134,"config":135},"After identifying a bug, a problematic action someone could take is fix it in the just-released version and not fix it in `main`. To avoid it, developers should always fix forward by pushing the change in `main`, then cherry-pick it into another `patch-release` branch.\n",{"id":136},"10-fix-bugs-in-main-first-and-release-branches-second",{"type":83,"componentName":83,"componentContent":138},{"header":78,"text":139,"config":140},"Developers should not only say what they did, but also why they did it. An even more useful tactic is to explain why this option was selected over others to help future contributors understand the development process. Writing descriptive commit messages is useful for code reviews and future development.\n",{"id":141},"11-commit-messages-reflect-intent",{"type":143,"componentName":143,"componentContent":144},"TopicsCallToAction",{"subtitle":145,"primaryButton":146},"Discover how GitLab streamlines the code review process",{"text":147,"config":148},"Learn More",{"href":149},"/solutions/source-code-management/",{"type":151,"componentName":151,"componentContent":152},"CommonResourcesContainer",{"header":153,"tabs":154},"Want to learn more about software development best practices?",[155],{"name":156,"items":157,"config":158},"resources",[],{"key":156},{"type":160,"componentName":160},"CommonNextSteps","content:en-us:topics:version-control:what-are-gitlab-flow-best-practices:index.yml","yaml","content","en-us/topics/version-control/what-are-gitlab-flow-best-practices/index.yml","en-us/topics/version-control/what-are-gitlab-flow-best-practices/index","yml",{"_path":168,"_dir":169,"_draft":6,"_partial":6,"_locale":7,"data":170,"_id":591,"_type":162,"title":592,"_source":163,"_file":593,"_stem":594,"_extension":166},"/shared/en-us/main-navigation","en-us",{"logo":171,"freeTrial":176,"sales":181,"login":186,"items":191,"search":522,"minimal":553,"duo":572,"pricingDeployment":581},{"config":172},{"href":173,"dataGaName":174,"dataGaLocation":175},"/","gitlab logo","header",{"text":177,"config":178},"Get free trial",{"href":179,"dataGaName":180,"dataGaLocation":175},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":182,"config":183},"Talk to sales",{"href":184,"dataGaName":185,"dataGaLocation":175},"/sales/","sales",{"text":187,"config":188},"Sign in",{"href":189,"dataGaName":190,"dataGaLocation":175},"https://gitlab.com/users/sign_in/","sign in",[192,236,333,338,443,503],{"text":193,"config":194,"cards":196,"footer":219},"Platform",{"dataNavLevelOne":195},"platform",[197,203,211],{"title":193,"description":198,"link":199},"The most comprehensive AI-powered DevSecOps Platform",{"text":200,"config":201},"Explore our Platform",{"href":202,"dataGaName":195,"dataGaLocation":175},"/platform/",{"title":204,"description":205,"link":206},"GitLab Duo (AI)","Build software faster with AI at every stage of development",{"text":207,"config":208},"Meet GitLab Duo",{"href":209,"dataGaName":210,"dataGaLocation":175},"/gitlab-duo/","gitlab duo ai",{"title":212,"description":213,"link":214},"Why GitLab","10 reasons why Enterprises choose GitLab",{"text":215,"config":216},"Learn more",{"href":217,"dataGaName":218,"dataGaLocation":175},"/why-gitlab/","why gitlab",{"title":220,"items":221},"Get started with",[222,227,232],{"text":223,"config":224},"Platform Engineering",{"href":225,"dataGaName":226,"dataGaLocation":175},"/solutions/platform-engineering/","platform engineering",{"text":228,"config":229},"Developer Experience",{"href":230,"dataGaName":231,"dataGaLocation":175},"/developer-experience/","Developer experience",{"text":233,"config":234},"MLOps",{"href":235,"dataGaName":233,"dataGaLocation":175},"/topics/devops/the-role-of-ai-in-devops/",{"text":237,"left":238,"config":239,"link":241,"lists":245,"footer":315},"Product",true,{"dataNavLevelOne":240},"solutions",{"text":242,"config":243},"View all Solutions",{"href":244,"dataGaName":240,"dataGaLocation":175},"/solutions/",[246,270,294],{"title":247,"description":248,"link":249,"items":254},"Automation","CI/CD and automation to accelerate deployment",{"config":250},{"icon":251,"href":252,"dataGaName":253,"dataGaLocation":175},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[255,259,263,266],{"text":256,"config":257},"CI/CD",{"href":258,"dataGaLocation":175,"dataGaName":256},"/solutions/continuous-integration/",{"text":260,"config":261},"AI-Assisted Development",{"href":209,"dataGaLocation":175,"dataGaName":262},"AI assisted development",{"text":264,"config":265},"Source Code Management",{"href":149,"dataGaLocation":175,"dataGaName":264},{"text":267,"config":268},"Automated Software Delivery",{"href":252,"dataGaLocation":175,"dataGaName":269},"Automated software delivery",{"title":271,"description":272,"link":273,"items":278},"Security","Deliver code faster without compromising security",{"config":274},{"href":275,"dataGaName":276,"dataGaLocation":175,"icon":277},"/solutions/security-compliance/","security and compliance","ShieldCheckLight",[279,284,289],{"text":280,"config":281},"Application Security Testing",{"href":282,"dataGaName":283,"dataGaLocation":175},"/solutions/application-security-testing/","Application security testing",{"text":285,"config":286},"Software Supply Chain Security",{"href":287,"dataGaLocation":175,"dataGaName":288},"/solutions/supply-chain/","Software supply chain security",{"text":290,"config":291},"Software Compliance",{"href":292,"dataGaName":293,"dataGaLocation":175},"/solutions/software-compliance/","software compliance",{"title":295,"link":296,"items":301},"Measurement",{"config":297},{"icon":298,"href":299,"dataGaName":300,"dataGaLocation":175},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[302,306,310],{"text":303,"config":304},"Visibility & Measurement",{"href":299,"dataGaLocation":175,"dataGaName":305},"Visibility and Measurement",{"text":307,"config":308},"Value Stream Management",{"href":309,"dataGaLocation":175,"dataGaName":307},"/solutions/value-stream-management/",{"text":311,"config":312},"Analytics & Insights",{"href":313,"dataGaLocation":175,"dataGaName":314},"/solutions/analytics-and-insights/","Analytics and insights",{"title":316,"items":317},"GitLab for",[318,323,328],{"text":319,"config":320},"Enterprise",{"href":321,"dataGaLocation":175,"dataGaName":322},"/enterprise/","enterprise",{"text":324,"config":325},"Small Business",{"href":326,"dataGaLocation":175,"dataGaName":327},"/small-business/","small business",{"text":329,"config":330},"Public Sector",{"href":331,"dataGaLocation":175,"dataGaName":332},"/solutions/public-sector/","public sector",{"text":334,"config":335},"Pricing",{"href":336,"dataGaName":337,"dataGaLocation":175,"dataNavLevelOne":337},"/pricing/","pricing",{"text":339,"config":340,"link":341,"lists":345,"feature":430},"Resources",{"dataNavLevelOne":156},{"text":342,"config":343},"View all resources",{"href":344,"dataGaName":156,"dataGaLocation":175},"/resources/",[346,379,402],{"title":347,"items":348},"Getting started",[349,354,359,364,369,374],{"text":350,"config":351},"Install",{"href":352,"dataGaName":353,"dataGaLocation":175},"/install/","install",{"text":355,"config":356},"Quick start guides",{"href":357,"dataGaName":358,"dataGaLocation":175},"/get-started/","quick setup checklists",{"text":360,"config":361},"Learn",{"href":362,"dataGaLocation":175,"dataGaName":363},"https://university.gitlab.com/","learn",{"text":365,"config":366},"Product documentation",{"href":367,"dataGaName":368,"dataGaLocation":175},"https://docs.gitlab.com/","product documentation",{"text":370,"config":371},"Best practice videos",{"href":372,"dataGaName":373,"dataGaLocation":175},"/getting-started-videos/","best practice videos",{"text":375,"config":376},"Integrations",{"href":377,"dataGaName":378,"dataGaLocation":175},"/integrations/","integrations",{"title":380,"items":381},"Discover",[382,387,392,397],{"text":383,"config":384},"Customer success stories",{"href":385,"dataGaName":386,"dataGaLocation":175},"/customers/","customer success stories",{"text":388,"config":389},"Blog",{"href":390,"dataGaName":391,"dataGaLocation":175},"/blog/","blog",{"text":393,"config":394},"Remote",{"href":395,"dataGaName":396,"dataGaLocation":175},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":398,"config":399},"TeamOps",{"href":400,"dataGaName":401,"dataGaLocation":175},"/teamops/","teamops",{"title":403,"items":404},"Connect",[405,410,415,420,425],{"text":406,"config":407},"GitLab Services",{"href":408,"dataGaName":409,"dataGaLocation":175},"/services/","services",{"text":411,"config":412},"Community",{"href":413,"dataGaName":414,"dataGaLocation":175},"/community/","community",{"text":416,"config":417},"Forum",{"href":418,"dataGaName":419,"dataGaLocation":175},"https://forum.gitlab.com/","forum",{"text":421,"config":422},"Events",{"href":423,"dataGaName":424,"dataGaLocation":175},"/events/","events",{"text":426,"config":427},"Partners",{"href":428,"dataGaName":429,"dataGaLocation":175},"/partners/","partners",{"backgroundColor":431,"textColor":432,"text":433,"image":434,"link":438},"#2f2a6b","#fff","Insights for the future of software development",{"altText":435,"config":436},"the source promo card",{"src":437},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":439,"config":440},"Read the latest",{"href":441,"dataGaName":442,"dataGaLocation":175},"/the-source/","the source",{"text":444,"config":445,"lists":447},"Company",{"dataNavLevelOne":446},"company",[448],{"items":449},[450,455,461,463,468,473,478,483,488,493,498],{"text":451,"config":452},"About",{"href":453,"dataGaName":454,"dataGaLocation":175},"/company/","about",{"text":456,"config":457,"footerGa":460},"Jobs",{"href":458,"dataGaName":459,"dataGaLocation":175},"/jobs/","jobs",{"dataGaName":459},{"text":421,"config":462},{"href":423,"dataGaName":424,"dataGaLocation":175},{"text":464,"config":465},"Leadership",{"href":466,"dataGaName":467,"dataGaLocation":175},"/company/team/e-group/","leadership",{"text":469,"config":470},"Team",{"href":471,"dataGaName":472,"dataGaLocation":175},"/company/team/","team",{"text":474,"config":475},"Handbook",{"href":476,"dataGaName":477,"dataGaLocation":175},"https://handbook.gitlab.com/","handbook",{"text":479,"config":480},"Investor relations",{"href":481,"dataGaName":482,"dataGaLocation":175},"https://ir.gitlab.com/","investor relations",{"text":484,"config":485},"Trust Center",{"href":486,"dataGaName":487,"dataGaLocation":175},"/security/","trust center",{"text":489,"config":490},"AI Transparency Center",{"href":491,"dataGaName":492,"dataGaLocation":175},"/ai-transparency-center/","ai transparency center",{"text":494,"config":495},"Newsletter",{"href":496,"dataGaName":497,"dataGaLocation":175},"/company/contact/","newsletter",{"text":499,"config":500},"Press",{"href":501,"dataGaName":502,"dataGaLocation":175},"/press/","press",{"text":504,"config":505,"lists":506},"Contact us",{"dataNavLevelOne":446},[507],{"items":508},[509,512,517],{"text":182,"config":510},{"href":184,"dataGaName":511,"dataGaLocation":175},"talk to sales",{"text":513,"config":514},"Get help",{"href":515,"dataGaName":516,"dataGaLocation":175},"/support/","get help",{"text":518,"config":519},"Customer portal",{"href":520,"dataGaName":521,"dataGaLocation":175},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":523,"login":524,"suggestions":531},"Close",{"text":525,"link":526},"To search repositories and projects, login to",{"text":527,"config":528},"gitlab.com",{"href":189,"dataGaName":529,"dataGaLocation":530},"search login","search",{"text":532,"default":533},"Suggestions",[534,536,540,542,546,550],{"text":204,"config":535},{"href":209,"dataGaName":204,"dataGaLocation":530},{"text":537,"config":538},"Code Suggestions (AI)",{"href":539,"dataGaName":537,"dataGaLocation":530},"/solutions/code-suggestions/",{"text":256,"config":541},{"href":258,"dataGaName":256,"dataGaLocation":530},{"text":543,"config":544},"GitLab on AWS",{"href":545,"dataGaName":543,"dataGaLocation":530},"/partners/technology-partners/aws/",{"text":547,"config":548},"GitLab on Google Cloud",{"href":549,"dataGaName":547,"dataGaLocation":530},"/partners/technology-partners/google-cloud-platform/",{"text":551,"config":552},"Why GitLab?",{"href":217,"dataGaName":551,"dataGaLocation":530},{"freeTrial":554,"mobileIcon":559,"desktopIcon":564,"secondaryButton":567},{"text":555,"config":556},"Start free trial",{"href":557,"dataGaName":180,"dataGaLocation":558},"https://gitlab.com/-/trials/new/","nav",{"altText":560,"config":561},"Gitlab Icon",{"src":562,"dataGaName":563,"dataGaLocation":558},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":560,"config":565},{"src":566,"dataGaName":563,"dataGaLocation":558},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":568,"config":569},"Get Started",{"href":570,"dataGaName":571,"dataGaLocation":558},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":573,"mobileIcon":577,"desktopIcon":579},{"text":574,"config":575},"Learn more about GitLab Duo",{"href":209,"dataGaName":576,"dataGaLocation":558},"gitlab duo",{"altText":560,"config":578},{"src":562,"dataGaName":563,"dataGaLocation":558},{"altText":560,"config":580},{"src":566,"dataGaName":563,"dataGaLocation":558},{"freeTrial":582,"mobileIcon":587,"desktopIcon":589},{"text":583,"config":584},"Back to pricing",{"href":336,"dataGaName":585,"dataGaLocation":558,"icon":586},"back to pricing","GoBack",{"altText":560,"config":588},{"src":562,"dataGaName":563,"dataGaLocation":558},{"altText":560,"config":590},{"src":566,"dataGaName":563,"dataGaLocation":558},"content:shared:en-us:main-navigation.yml","Main Navigation","shared/en-us/main-navigation.yml","shared/en-us/main-navigation",{"_path":596,"_dir":169,"_draft":6,"_partial":6,"_locale":7,"title":597,"button":598,"image":603,"config":607,"_id":609,"_type":162,"_source":163,"_file":610,"_stem":611,"_extension":166},"/shared/en-us/banner","is now in public beta!",{"text":599,"config":600},"Try the Beta",{"href":601,"dataGaName":602,"dataGaLocation":175},"/gitlab-duo/agent-platform/","duo banner",{"altText":604,"config":605},"GitLab Duo Agent Platform",{"src":606},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1753720689/somrf9zaunk0xlt7ne4x.svg",{"layout":608},"release","content:shared:en-us:banner.yml","shared/en-us/banner.yml","shared/en-us/banner",{"_path":613,"_dir":169,"_draft":6,"_partial":6,"_locale":7,"data":614,"_id":818,"_type":162,"title":819,"_source":163,"_file":820,"_stem":821,"_extension":166},"/shared/en-us/main-footer",{"text":615,"source":616,"edit":622,"contribute":627,"config":632,"items":637,"minimal":810},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":617,"config":618},"View page source",{"href":619,"dataGaName":620,"dataGaLocation":621},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":623,"config":624},"Edit this page",{"href":625,"dataGaName":626,"dataGaLocation":621},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":628,"config":629},"Please contribute",{"href":630,"dataGaName":631,"dataGaLocation":621},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":633,"facebook":634,"youtube":635,"linkedin":636},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[638,661,717,746,780],{"title":193,"links":639,"subMenu":644},[640],{"text":641,"config":642},"DevSecOps platform",{"href":202,"dataGaName":643,"dataGaLocation":621},"devsecops platform",[645],{"title":334,"links":646},[647,651,656],{"text":648,"config":649},"View plans",{"href":336,"dataGaName":650,"dataGaLocation":621},"view plans",{"text":652,"config":653},"Why Premium?",{"href":654,"dataGaName":655,"dataGaLocation":621},"/pricing/premium/","why premium",{"text":657,"config":658},"Why Ultimate?",{"href":659,"dataGaName":660,"dataGaLocation":621},"/pricing/ultimate/","why ultimate",{"title":662,"links":663},"Solutions",[664,669,671,673,678,683,687,690,694,699,701,704,707,712],{"text":665,"config":666},"Digital transformation",{"href":667,"dataGaName":668,"dataGaLocation":621},"/topics/digital-transformation/","digital transformation",{"text":280,"config":670},{"href":282,"dataGaName":280,"dataGaLocation":621},{"text":269,"config":672},{"href":252,"dataGaName":253,"dataGaLocation":621},{"text":674,"config":675},"Agile development",{"href":676,"dataGaName":677,"dataGaLocation":621},"/solutions/agile-delivery/","agile delivery",{"text":679,"config":680},"Cloud transformation",{"href":681,"dataGaName":682,"dataGaLocation":621},"/topics/cloud-native/","cloud transformation",{"text":684,"config":685},"SCM",{"href":149,"dataGaName":686,"dataGaLocation":621},"source code management",{"text":256,"config":688},{"href":258,"dataGaName":689,"dataGaLocation":621},"continuous integration & delivery",{"text":691,"config":692},"Value stream management",{"href":309,"dataGaName":693,"dataGaLocation":621},"value stream management",{"text":695,"config":696},"GitOps",{"href":697,"dataGaName":698,"dataGaLocation":621},"/solutions/gitops/","gitops",{"text":319,"config":700},{"href":321,"dataGaName":322,"dataGaLocation":621},{"text":702,"config":703},"Small business",{"href":326,"dataGaName":327,"dataGaLocation":621},{"text":705,"config":706},"Public sector",{"href":331,"dataGaName":332,"dataGaLocation":621},{"text":708,"config":709},"Education",{"href":710,"dataGaName":711,"dataGaLocation":621},"/solutions/education/","education",{"text":713,"config":714},"Financial services",{"href":715,"dataGaName":716,"dataGaLocation":621},"/solutions/finance/","financial services",{"title":339,"links":718},[719,721,723,725,728,730,732,734,736,738,740,742,744],{"text":350,"config":720},{"href":352,"dataGaName":353,"dataGaLocation":621},{"text":355,"config":722},{"href":357,"dataGaName":358,"dataGaLocation":621},{"text":360,"config":724},{"href":362,"dataGaName":363,"dataGaLocation":621},{"text":365,"config":726},{"href":367,"dataGaName":727,"dataGaLocation":621},"docs",{"text":388,"config":729},{"href":390,"dataGaName":391,"dataGaLocation":621},{"text":383,"config":731},{"href":385,"dataGaName":386,"dataGaLocation":621},{"text":393,"config":733},{"href":395,"dataGaName":396,"dataGaLocation":621},{"text":406,"config":735},{"href":408,"dataGaName":409,"dataGaLocation":621},{"text":398,"config":737},{"href":400,"dataGaName":401,"dataGaLocation":621},{"text":411,"config":739},{"href":413,"dataGaName":414,"dataGaLocation":621},{"text":416,"config":741},{"href":418,"dataGaName":419,"dataGaLocation":621},{"text":421,"config":743},{"href":423,"dataGaName":424,"dataGaLocation":621},{"text":426,"config":745},{"href":428,"dataGaName":429,"dataGaLocation":621},{"title":444,"links":747},[748,750,752,754,756,758,760,764,769,771,773,775],{"text":451,"config":749},{"href":453,"dataGaName":446,"dataGaLocation":621},{"text":456,"config":751},{"href":458,"dataGaName":459,"dataGaLocation":621},{"text":464,"config":753},{"href":466,"dataGaName":467,"dataGaLocation":621},{"text":469,"config":755},{"href":471,"dataGaName":472,"dataGaLocation":621},{"text":474,"config":757},{"href":476,"dataGaName":477,"dataGaLocation":621},{"text":479,"config":759},{"href":481,"dataGaName":482,"dataGaLocation":621},{"text":761,"config":762},"Sustainability",{"href":763,"dataGaName":761,"dataGaLocation":621},"/sustainability/",{"text":765,"config":766},"Diversity, inclusion and belonging (DIB)",{"href":767,"dataGaName":768,"dataGaLocation":621},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":484,"config":770},{"href":486,"dataGaName":487,"dataGaLocation":621},{"text":494,"config":772},{"href":496,"dataGaName":497,"dataGaLocation":621},{"text":499,"config":774},{"href":501,"dataGaName":502,"dataGaLocation":621},{"text":776,"config":777},"Modern Slavery Transparency Statement",{"href":778,"dataGaName":779,"dataGaLocation":621},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":781,"links":782},"Contact Us",[783,786,788,790,795,800,805],{"text":784,"config":785},"Contact an expert",{"href":184,"dataGaName":185,"dataGaLocation":621},{"text":513,"config":787},{"href":515,"dataGaName":516,"dataGaLocation":621},{"text":518,"config":789},{"href":520,"dataGaName":521,"dataGaLocation":621},{"text":791,"config":792},"Status",{"href":793,"dataGaName":794,"dataGaLocation":621},"https://status.gitlab.com/","status",{"text":796,"config":797},"Terms of use",{"href":798,"dataGaName":799,"dataGaLocation":621},"/terms/","terms of use",{"text":801,"config":802},"Privacy statement",{"href":803,"dataGaName":804,"dataGaLocation":621},"/privacy/","privacy statement",{"text":806,"config":807},"Cookie preferences",{"dataGaName":808,"dataGaLocation":621,"id":809,"isOneTrustButton":238},"cookie preferences","ot-sdk-btn",{"items":811},[812,814,816],{"text":796,"config":813},{"href":798,"dataGaName":799,"dataGaLocation":621},{"text":801,"config":815},{"href":803,"dataGaName":804,"dataGaLocation":621},{"text":806,"config":817},{"dataGaName":808,"dataGaLocation":621,"id":809,"isOneTrustButton":238},"content:shared:en-us:main-footer.yml","Main Footer","shared/en-us/main-footer.yml","shared/en-us/main-footer",{"_path":823,"_dir":169,"_draft":6,"_partial":6,"_locale":7,"header":824,"eyebrow":825,"blurb":826,"button":827,"secondaryButton":831,"_id":833,"_type":162,"title":834,"_source":163,"_file":835,"_stem":836,"_extension":166},"/shared/en-us/next-steps","Start shipping better software faster","50%+ of the Fortune 100 trust GitLab","See what your team can do with the intelligent\n\n\nDevSecOps platform.\n",{"text":177,"config":828},{"href":829,"dataGaName":180,"dataGaLocation":830},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":182,"config":832},{"href":184,"dataGaName":185,"dataGaLocation":830},"content:shared:en-us:next-steps.yml","Next Steps","shared/en-us/next-steps.yml","shared/en-us/next-steps",1758326284709]