[{"data":1,"prerenderedAt":970},["ShallowReactive",2],{"/en-us/topics/version-control/version-control-best-practices":3,"navigation-en-us":179,"banner-en-us":605,"footer-en-us":622,"next-steps-en-us":865,"footer-source-/en-us/topics/version-control/version-control-best-practices/":880},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":11,"_id":173,"_type":174,"title":7,"_source":175,"_file":176,"_stem":177,"_extension":178},"/en-us/topics/version-control/version-control-best-practices","version-control",false,"",{"title":9,"ogTitle":9,"description":10,"ogDescription":10},"What are Git version control best practices?","Making the most of Git involves learning best practices to streamline workflows and ensure consistency across a codebase.",[12,26,32,120,142,171],{"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},"Version control best practices",{"type":27,"componentName":27,"componentContent":28},"CommonArticleHero",{"title":9,"text":29,"config":30},"Making the most of Git involves learning best practices to streamline workflows, collaborate effectively, and maintain code quality while reducing the risks of conflicts and errors.\n",{"id":31,"twoColumns":6},"what-are-git-version-control-best-practices?",{"type":33,"componentName":33,"componentContent":34},"CommonSideNavigationWithTree",{"anchors":35,"components":70},{"text":36,"data":37},"On this page",[38,42,46,50,54,58,62,66],{"text":39,"config":40},"The importance of Git version control best practices",{"href":41},"#the-importance-of-git-version-control-best-practices",{"text":43,"config":44},"Make incremental, small changes",{"href":45},"#make-incremental-small-changes",{"text":47,"config":48},"Keep commits atomic",{"href":49},"#keep-commits-atomic",{"text":51,"config":52},"Develop using branches",{"href":53},"#develop-using-branches",{"text":55,"config":56},"Write descriptive commit messages",{"href":57},"#write-descriptive-commit-messages",{"text":59,"config":60},"Obtain feedback through code reviews",{"href":61},"#obtain-feedback-through-code-reviews",{"text":63,"config":64},"Identify a branching strategy",{"href":65},"#identify-a-branching-strategy",{"text":67,"config":68},"Conclusion",{"href":69},"#conclusion",[71,77,82,87,92,97,102,107,112],{"type":72,"componentName":72,"componentContent":73},"TopicsCopy",{"header":39,"text":74,"config":75},"Git version control best practices are important because they improve collaboration, prevent silos, and help teams manage rapid changes efficiently.\n\n[Git version control](/topics/version-control/){data-ga-name=\"git version control\" data-ga-location=\"body\"} best practices help software development teams meet the demands of rapid changes in the industry combined with increasing customer demand for new features. The speed at which teams must work can lead teams to silos, which slows down velocity. Software development teams turn to version control to [streamline collaboration](/topics/version-control/software-team-collaboration/){data-ga-name=\"streamline collaboration\" data-ga-location=\"body\"} and break down information silos.\n\nUsing [Git best practices](/images/press/git-cheat-sheet.pdf){data-ga-name=\"git best practices\" data-ga-location=\"body\"}, teams can coordinate all changes in a software project and utilize fast branching to help teams quickly collaborate and share feedback, leading to immediate, actionable changes.  \n\nGit, as a cornerstone of modern software development, offers a suite of powerful tools and features designed to streamline development cycles, enhance code quality, and foster collaboration among team members.\n",{"id":76},"the-importance-of-git-version-control-best-practices",{"type":72,"componentName":72,"componentContent":78},{"header":43,"text":79,"config":80},"Making small, incremental changes reduces merge conflicts, makes testing easier, and simplifies rolling back errors.\n\nWrite the smallest amount of code possible to solve a problem. After identifying a problem or enhancement, the best way to try something new and untested is to divide the update into small batches of value that can easily and rapidly be tested with the end user to prove the validity of the proposed solution and to roll back in case it doesn't work without deprecating the whole new functionality.\n\nCommitting code in small batches decreases the likelihood of integration conflicts, because the longer a branch lives separated from the main branch or codeline, the longer other developers are merging changes to the main branch, so integration conflicts will likely arise when merging. \n\nFrequent, small commits solves this problem. Incremental changes also help team members easily revert if merge conflicts happen, especially when those changes have been properly documented in the form of descriptive commit messages.\n",{"id":81},"make-incremental-small-changes",{"type":72,"componentName":72,"componentContent":83},{"header":47,"text":84,"config":85},"Atomic commits ensure each commit represents one clear task or fix, making reviews faster and reverts safer.\n\nRelated to making small changes, atomic commits are a single unit of work, involving only one task or one fix (e.g. upgrade, bug fix, refactor). Atomic commits make code reviews faster and reverts easier, since they can be applied or reverted without any unintended side effects.\n\nThe goal of atomic commits isn't to create hundreds of commits but to group commits by context. For example, if a developer needs to refactor code and add a new feature, she would create two separate commits rather than create a monolithic commit which includes changes with different purposes.\n",{"id":86},"keep-commits-atomic",{"type":72,"componentName":72,"componentContent":88},{"header":51,"text":89,"config":90},"Developing in branches keeps unstable code separate from production, helping teams test safely and collaborate more effectively.\n\nUsing branches, software development teams can make changes without affecting the main codeline. The running history of changes are tracked in a branch, and when the code is ready, it's merged into the main branch.\n\nBranching organizes development and separates work in progress from stable, tested code in the main branch. Developing in branches ensures that bugs and vulnerabilities don't work their way into the source code and impact users, since testing and finding those in a branch is easier.\n",{"id":91},"develop-using-branches",{"type":72,"componentName":72,"componentContent":93},{"header":55,"text":94,"config":95},"Descriptive commit messages clearly explain the purpose of each change, making version history easier to understand and maintain.\n\nDescriptive commit messages are as important as a change itself. Write descriptive commit messages starting with a verb in present tense in imperative mood to indicate the purpose of each commit in a clear and concise manner. Each commit should only have a single purpose explained in detail in the commit message. The [Git documentation](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/SubmittingPatches?id=HEAD#n133) provides guidance on how to write descriptive commit messages:\n\n\n> Describe your changes in imperative mood, e.g. “make xyzzy do frotz” instead of “\\[This patch] makes xyzzy do frotz” or “\\[I] changed xyzzy to do frotz,” as if you are giving orders to the codebase to change its behavior. Try to make sure your explanation can be understood without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion.\n\n\nWriting commit messages in this way forces software teams to understand the value an add or fix makes to the existing code line. If teams find it impossible to find the value and describe it, then it might be worth reassessing the motivations behind the commit. \n\nThere's always time to commit later, as long changes are stashed and there's consistency in commits.\n",{"id":96},"write-descriptive-commit-messages",{"type":72,"componentName":72,"componentContent":98},{"header":59,"text":99,"config":100},"Code reviews as part of Git workflows improve code quality, transfer knowledge, and help identify issues early.\n\nRequesting feedback from others is an excellent way to ensure code quality. [Code reviews](/topics/version-control/what-is-code-review/){data-ga-name=\"code reviews\" data-ga-location=\"body\"} are an effective method to identify whether a proposal solves a problem in the most effective way possible. Asking individuals from other teams to review code is important, because some areas of the code base might include specific domain knowledge or even security implications beyond the individual contributor's attributions.\n\nBringing in a specific stakeholder to the conversation is a good practice and creates a faster feedback loop that prevents problems later in the software development lifecycle. \n\nThis is especially important for junior developers, because through code review, senior developers can transfer knowledge in a very practical, hands on manner.\n",{"id":101},"obtain-feedback-through-code-reviews",{"type":72,"componentName":72,"componentContent":103},{"header":63,"text":104,"config":105},"Choosing a clear branching strategy ensures consistency across teams, prevents workflow conflicts, and improves collaboration.\n\nSoftware development teams include professionals with diverse experiences and background, which can potentially cause conflicting workflows. Determining a single branching strategy is the solution to a chaotic development experience.\n\nWhile there are several approaches to development, the most common are:\n\n* Centralized workflow: Teams use only a single repository and commit directly to the main branch.\n\n* Feature branching: Teams use a new branch for each feature and don't commit directly to the main branch.\n\n* GitFlow: An extreme version of feature branching in which development occurs on the develop branch, moves to a release branch, and merges into the main branch.\n\n* Personal branching: Similar to feature branching, but rather than develop on a branch per feature, it's per developer. Every user merges to the main branch when they complete their work.\n\n\nMany teams decide to follow an established workflow, but others create a customized approach based on specific needs. Regardless of the strategy, it's important to communicate the decision and workflow logistics to team members and provide training if the approach is new to some members.\n",{"id":106},"identify-a-branching-strategy",{"type":72,"componentName":72,"componentContent":108},{"header":67,"text":109,"config":110},"Adopting Git version control best practices is crucial for software development teams, enabling them to leverage powerful features and tools that enhance development workflows and version history management. It ensures efficient collaboration among team members, streamlines the review process, and safeguards the integrity of software code. The Integration of version control systems into the development cycle has become a fundamental requirement.\n\nThe benefits of version control are undeniable, offering a roadmap to success for organizations looking to thrive in the competitive landscape of software development. By adopting these best practices, teams can set the stage for future growth and innovation.\n",{"id":111},"conclusion",{"type":113,"componentName":113,"componentContent":114},"TopicsCallToAction",{"subtitle":115,"primaryButton":116},"Discover how GitLab helps teams create high quality code",{"text":117,"config":118},"Learn more",{"href":119},"/solutions/source-code-management/",{"type":121,"componentName":121,"componentContent":122},"CommonFaq",{"header":123,"groups":124},"Frequently Asked Questions",[125],{"questions":126},[127,130,133,136,139],{"question":128,"answer":129},"Why should development teams make small, incremental changes instead of large commits?","Small changes decrease the likelihood of integration conflicts because shorter branch separation from main reduces merge issues. Incremental changes help team members easily revert merge conflicts and enable rapid testing with end users to prove solution validity without depreciating whole functionality.",{"question":131,"answer":132},"What are atomic commits and how do they benefit development workflows?","Atomic commits are single units of work involving only one task or fix like upgrades, bug fixes, or refactoring. They make code reviews faster and reverts easier since they can be applied or reverted without unintended side effects, grouping commits by context rather than creating hundreds of separate commits.",{"question":134,"answer":135},"What are the four main Git branching strategies teams can adopt?","The four strategies are centralized workflow where teams commit directly to main branch, feature branching with new branches for each feature, GitFlow as extreme feature branching using develop-release-main flow, and personal branching with one branch per developer who merges completed work to main.",{"question":137,"answer":138},"How should teams write effective Git commit messages?","Write descriptive commit messages starting with verbs in present tense imperative mood to indicate each commit's purpose clearly and concisely. Describe changes as commands to the codebase and ensure explanations can be understood without external resources.",{"question":140,"answer":141},"Why are code reviews important in Git version control workflows?","Code reviews ensure code quality by identifying whether proposals solve problems most effectively. Reviews from other teams bring domain knowledge and security implications beyond individual contributors, creating faster feedback loops that prevent problems later in the development lifecycle, especially for knowledge transfer to junior developers.",{"type":143,"componentName":143,"componentContent":144},"CommonResourcesContainer",{"header":145,"tabs":146},"Want to learn more about Git and best practices?",[147],{"name":148,"items":149,"config":170},"resources",[150,160],{"header":151,"type":152,"image":153,"link":156},"Learn how Worldline uses GitLab to improve code reviews","Case Study",{"altText":151,"config":154},{"src":155},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749157557/Website/Topics/resources_10.jpg",{"text":117,"config":157},{"href":158,"icon":159,"modal":6},"/customers/worldline/","Web",{"header":161,"type":162,"image":163,"link":166},"Discover a Git branching strategy to simplify software development","Books",{"altText":161,"config":164},{"src":165},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749157556/Website/Topics/resources_1.jpg",{"text":117,"config":167},{"href":168,"icon":169,"modal":6},"/resources/ebook-git-branching-strategies/","Book",{"key":148},{"type":172,"componentName":172},"CommonNextSteps","content:en-us:topics:version-control:version-control-best-practices:index.yml","yaml","content","en-us/topics/version-control/version-control-best-practices/index.yml","en-us/topics/version-control/version-control-best-practices/index","yml",{"_path":180,"_dir":181,"_draft":6,"_partial":6,"_locale":7,"data":182,"_id":601,"_type":174,"title":602,"_source":175,"_file":603,"_stem":604,"_extension":178},"/shared/en-us/main-navigation","en-us",{"logo":183,"freeTrial":188,"sales":193,"login":198,"items":203,"search":532,"minimal":563,"duo":582,"pricingDeployment":591},{"config":184},{"href":185,"dataGaName":186,"dataGaLocation":187},"/","gitlab logo","header",{"text":189,"config":190},"Get free trial",{"href":191,"dataGaName":192,"dataGaLocation":187},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":194,"config":195},"Talk to sales",{"href":196,"dataGaName":197,"dataGaLocation":187},"/sales/","sales",{"text":199,"config":200},"Sign in",{"href":201,"dataGaName":202,"dataGaLocation":187},"https://gitlab.com/users/sign_in/","sign in",[204,247,343,348,453,513],{"text":205,"config":206,"cards":208,"footer":230},"Platform",{"dataNavLevelOne":207},"platform",[209,215,223],{"title":205,"description":210,"link":211},"The most comprehensive AI-powered DevSecOps Platform",{"text":212,"config":213},"Explore our Platform",{"href":214,"dataGaName":207,"dataGaLocation":187},"/platform/",{"title":216,"description":217,"link":218},"GitLab Duo (AI)","Build software faster with AI at every stage of development",{"text":219,"config":220},"Meet GitLab Duo",{"href":221,"dataGaName":222,"dataGaLocation":187},"/gitlab-duo/","gitlab duo ai",{"title":224,"description":225,"link":226},"Why GitLab","10 reasons why Enterprises choose GitLab",{"text":117,"config":227},{"href":228,"dataGaName":229,"dataGaLocation":187},"/why-gitlab/","why gitlab",{"title":231,"items":232},"Get started with",[233,238,243],{"text":234,"config":235},"Platform Engineering",{"href":236,"dataGaName":237,"dataGaLocation":187},"/solutions/platform-engineering/","platform engineering",{"text":239,"config":240},"Developer Experience",{"href":241,"dataGaName":242,"dataGaLocation":187},"/developer-experience/","Developer experience",{"text":244,"config":245},"MLOps",{"href":246,"dataGaName":244,"dataGaLocation":187},"/topics/devops/the-role-of-ai-in-devops/",{"text":248,"left":249,"config":250,"link":252,"lists":256,"footer":325},"Product",true,{"dataNavLevelOne":251},"solutions",{"text":253,"config":254},"View all Solutions",{"href":255,"dataGaName":251,"dataGaLocation":187},"/solutions/",[257,281,304],{"title":258,"description":259,"link":260,"items":265},"Automation","CI/CD and automation to accelerate deployment",{"config":261},{"icon":262,"href":263,"dataGaName":264,"dataGaLocation":187},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[266,270,274,277],{"text":267,"config":268},"CI/CD",{"href":269,"dataGaLocation":187,"dataGaName":267},"/solutions/continuous-integration/",{"text":271,"config":272},"AI-Assisted Development",{"href":221,"dataGaLocation":187,"dataGaName":273},"AI assisted development",{"text":275,"config":276},"Source Code Management",{"href":119,"dataGaLocation":187,"dataGaName":275},{"text":278,"config":279},"Automated Software Delivery",{"href":263,"dataGaLocation":187,"dataGaName":280},"Automated software delivery",{"title":282,"description":283,"link":284,"items":289},"Security","Deliver code faster without compromising security",{"config":285},{"href":286,"dataGaName":287,"dataGaLocation":187,"icon":288},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[290,294,299],{"text":291,"config":292},"Application Security Testing",{"href":286,"dataGaName":293,"dataGaLocation":187},"Application security testing",{"text":295,"config":296},"Software Supply Chain Security",{"href":297,"dataGaLocation":187,"dataGaName":298},"/solutions/supply-chain/","Software supply chain security",{"text":300,"config":301},"Software Compliance",{"href":302,"dataGaName":303,"dataGaLocation":187},"/solutions/software-compliance/","software compliance",{"title":305,"link":306,"items":311},"Measurement",{"config":307},{"icon":308,"href":309,"dataGaName":310,"dataGaLocation":187},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[312,316,320],{"text":313,"config":314},"Visibility & Measurement",{"href":309,"dataGaLocation":187,"dataGaName":315},"Visibility and Measurement",{"text":317,"config":318},"Value Stream Management",{"href":319,"dataGaLocation":187,"dataGaName":317},"/solutions/value-stream-management/",{"text":321,"config":322},"Analytics & Insights",{"href":323,"dataGaLocation":187,"dataGaName":324},"/solutions/analytics-and-insights/","Analytics and insights",{"title":326,"items":327},"GitLab for",[328,333,338],{"text":329,"config":330},"Enterprise",{"href":331,"dataGaLocation":187,"dataGaName":332},"/enterprise/","enterprise",{"text":334,"config":335},"Small Business",{"href":336,"dataGaLocation":187,"dataGaName":337},"/small-business/","small business",{"text":339,"config":340},"Public Sector",{"href":341,"dataGaLocation":187,"dataGaName":342},"/solutions/public-sector/","public sector",{"text":344,"config":345},"Pricing",{"href":346,"dataGaName":347,"dataGaLocation":187,"dataNavLevelOne":347},"/pricing/","pricing",{"text":349,"config":350,"link":351,"lists":355,"feature":440},"Resources",{"dataNavLevelOne":148},{"text":352,"config":353},"View all resources",{"href":354,"dataGaName":148,"dataGaLocation":187},"/resources/",[356,389,412],{"title":357,"items":358},"Getting started",[359,364,369,374,379,384],{"text":360,"config":361},"Install",{"href":362,"dataGaName":363,"dataGaLocation":187},"/install/","install",{"text":365,"config":366},"Quick start guides",{"href":367,"dataGaName":368,"dataGaLocation":187},"/get-started/","quick setup checklists",{"text":370,"config":371},"Learn",{"href":372,"dataGaLocation":187,"dataGaName":373},"https://university.gitlab.com/","learn",{"text":375,"config":376},"Product documentation",{"href":377,"dataGaName":378,"dataGaLocation":187},"https://docs.gitlab.com/","product documentation",{"text":380,"config":381},"Best practice videos",{"href":382,"dataGaName":383,"dataGaLocation":187},"/getting-started-videos/","best practice videos",{"text":385,"config":386},"Integrations",{"href":387,"dataGaName":388,"dataGaLocation":187},"/integrations/","integrations",{"title":390,"items":391},"Discover",[392,397,402,407],{"text":393,"config":394},"Customer success stories",{"href":395,"dataGaName":396,"dataGaLocation":187},"/customers/","customer success stories",{"text":398,"config":399},"Blog",{"href":400,"dataGaName":401,"dataGaLocation":187},"/blog/","blog",{"text":403,"config":404},"Remote",{"href":405,"dataGaName":406,"dataGaLocation":187},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":408,"config":409},"TeamOps",{"href":410,"dataGaName":411,"dataGaLocation":187},"/teamops/","teamops",{"title":413,"items":414},"Connect",[415,420,425,430,435],{"text":416,"config":417},"GitLab Services",{"href":418,"dataGaName":419,"dataGaLocation":187},"/services/","services",{"text":421,"config":422},"Community",{"href":423,"dataGaName":424,"dataGaLocation":187},"/community/","community",{"text":426,"config":427},"Forum",{"href":428,"dataGaName":429,"dataGaLocation":187},"https://forum.gitlab.com/","forum",{"text":431,"config":432},"Events",{"href":433,"dataGaName":434,"dataGaLocation":187},"/events/","events",{"text":436,"config":437},"Partners",{"href":438,"dataGaName":439,"dataGaLocation":187},"/partners/","partners",{"backgroundColor":441,"textColor":442,"text":443,"image":444,"link":448},"#2f2a6b","#fff","Insights for the future of software development",{"altText":445,"config":446},"the source promo card",{"src":447},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":449,"config":450},"Read the latest",{"href":451,"dataGaName":452,"dataGaLocation":187},"/the-source/","the source",{"text":454,"config":455,"lists":457},"Company",{"dataNavLevelOne":456},"company",[458],{"items":459},[460,465,471,473,478,483,488,493,498,503,508],{"text":461,"config":462},"About",{"href":463,"dataGaName":464,"dataGaLocation":187},"/company/","about",{"text":466,"config":467,"footerGa":470},"Jobs",{"href":468,"dataGaName":469,"dataGaLocation":187},"/jobs/","jobs",{"dataGaName":469},{"text":431,"config":472},{"href":433,"dataGaName":434,"dataGaLocation":187},{"text":474,"config":475},"Leadership",{"href":476,"dataGaName":477,"dataGaLocation":187},"/company/team/e-group/","leadership",{"text":479,"config":480},"Team",{"href":481,"dataGaName":482,"dataGaLocation":187},"/company/team/","team",{"text":484,"config":485},"Handbook",{"href":486,"dataGaName":487,"dataGaLocation":187},"https://handbook.gitlab.com/","handbook",{"text":489,"config":490},"Investor relations",{"href":491,"dataGaName":492,"dataGaLocation":187},"https://ir.gitlab.com/","investor relations",{"text":494,"config":495},"Trust Center",{"href":496,"dataGaName":497,"dataGaLocation":187},"/security/","trust center",{"text":499,"config":500},"AI Transparency Center",{"href":501,"dataGaName":502,"dataGaLocation":187},"/ai-transparency-center/","ai transparency center",{"text":504,"config":505},"Newsletter",{"href":506,"dataGaName":507,"dataGaLocation":187},"/company/contact/","newsletter",{"text":509,"config":510},"Press",{"href":511,"dataGaName":512,"dataGaLocation":187},"/press/","press",{"text":514,"config":515,"lists":516},"Contact us",{"dataNavLevelOne":456},[517],{"items":518},[519,522,527],{"text":194,"config":520},{"href":196,"dataGaName":521,"dataGaLocation":187},"talk to sales",{"text":523,"config":524},"Get help",{"href":525,"dataGaName":526,"dataGaLocation":187},"/support/","get help",{"text":528,"config":529},"Customer portal",{"href":530,"dataGaName":531,"dataGaLocation":187},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":533,"login":534,"suggestions":541},"Close",{"text":535,"link":536},"To search repositories and projects, login to",{"text":537,"config":538},"gitlab.com",{"href":201,"dataGaName":539,"dataGaLocation":540},"search login","search",{"text":542,"default":543},"Suggestions",[544,546,550,552,556,560],{"text":216,"config":545},{"href":221,"dataGaName":216,"dataGaLocation":540},{"text":547,"config":548},"Code Suggestions (AI)",{"href":549,"dataGaName":547,"dataGaLocation":540},"/solutions/code-suggestions/",{"text":267,"config":551},{"href":269,"dataGaName":267,"dataGaLocation":540},{"text":553,"config":554},"GitLab on AWS",{"href":555,"dataGaName":553,"dataGaLocation":540},"/partners/technology-partners/aws/",{"text":557,"config":558},"GitLab on Google Cloud",{"href":559,"dataGaName":557,"dataGaLocation":540},"/partners/technology-partners/google-cloud-platform/",{"text":561,"config":562},"Why GitLab?",{"href":228,"dataGaName":561,"dataGaLocation":540},{"freeTrial":564,"mobileIcon":569,"desktopIcon":574,"secondaryButton":577},{"text":565,"config":566},"Start free trial",{"href":567,"dataGaName":192,"dataGaLocation":568},"https://gitlab.com/-/trials/new/","nav",{"altText":570,"config":571},"Gitlab Icon",{"src":572,"dataGaName":573,"dataGaLocation":568},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":570,"config":575},{"src":576,"dataGaName":573,"dataGaLocation":568},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":578,"config":579},"Get Started",{"href":580,"dataGaName":581,"dataGaLocation":568},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/compare/gitlab-vs-github/","get started",{"freeTrial":583,"mobileIcon":587,"desktopIcon":589},{"text":584,"config":585},"Learn more about GitLab Duo",{"href":221,"dataGaName":586,"dataGaLocation":568},"gitlab duo",{"altText":570,"config":588},{"src":572,"dataGaName":573,"dataGaLocation":568},{"altText":570,"config":590},{"src":576,"dataGaName":573,"dataGaLocation":568},{"freeTrial":592,"mobileIcon":597,"desktopIcon":599},{"text":593,"config":594},"Back to pricing",{"href":346,"dataGaName":595,"dataGaLocation":568,"icon":596},"back to pricing","GoBack",{"altText":570,"config":598},{"src":572,"dataGaName":573,"dataGaLocation":568},{"altText":570,"config":600},{"src":576,"dataGaName":573,"dataGaLocation":568},"content:shared:en-us:main-navigation.yml","Main Navigation","shared/en-us/main-navigation.yml","shared/en-us/main-navigation",{"_path":606,"_dir":181,"_draft":6,"_partial":6,"_locale":7,"title":607,"button":608,"image":613,"config":617,"_id":619,"_type":174,"_source":175,"_file":620,"_stem":621,"_extension":178},"/shared/en-us/banner","is now in public beta!",{"text":609,"config":610},"Try the Beta",{"href":611,"dataGaName":612,"dataGaLocation":187},"/gitlab-duo/agent-platform/","duo banner",{"altText":614,"config":615},"GitLab Duo Agent Platform",{"src":616},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1753720689/somrf9zaunk0xlt7ne4x.svg",{"layout":618},"release","content:shared:en-us:banner.yml","shared/en-us/banner.yml","shared/en-us/banner",{"_path":623,"_dir":181,"_draft":6,"_partial":6,"_locale":7,"data":624,"_id":861,"_type":174,"title":862,"_source":175,"_file":863,"_stem":864,"_extension":178},"/shared/en-us/main-footer",{"text":625,"source":626,"edit":632,"contribute":637,"config":642,"items":647,"minimal":853},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":627,"config":628},"View page source",{"href":629,"dataGaName":630,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":633,"config":634},"Edit this page",{"href":635,"dataGaName":636,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":638,"config":639},"Please contribute",{"href":640,"dataGaName":641,"dataGaLocation":631},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":643,"facebook":644,"youtube":645,"linkedin":646},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[648,695,746,790,819],{"title":344,"links":649,"subMenu":664},[650,654,659],{"text":651,"config":652},"View plans",{"href":346,"dataGaName":653,"dataGaLocation":631},"view plans",{"text":655,"config":656},"Why Premium?",{"href":657,"dataGaName":658,"dataGaLocation":631},"/pricing/premium/","why premium",{"text":660,"config":661},"Why Ultimate?",{"href":662,"dataGaName":663,"dataGaLocation":631},"/pricing/ultimate/","why ultimate",[665],{"title":666,"links":667},"Contact Us",[668,671,673,675,680,685,690],{"text":669,"config":670},"Contact sales",{"href":196,"dataGaName":197,"dataGaLocation":631},{"text":523,"config":672},{"href":525,"dataGaName":526,"dataGaLocation":631},{"text":528,"config":674},{"href":530,"dataGaName":531,"dataGaLocation":631},{"text":676,"config":677},"Status",{"href":678,"dataGaName":679,"dataGaLocation":631},"https://status.gitlab.com/","status",{"text":681,"config":682},"Terms of use",{"href":683,"dataGaName":684,"dataGaLocation":631},"/terms/","terms of use",{"text":686,"config":687},"Privacy statement",{"href":688,"dataGaName":689,"dataGaLocation":631},"/privacy/","privacy statement",{"text":691,"config":692},"Cookie preferences",{"dataGaName":693,"dataGaLocation":631,"id":694,"isOneTrustButton":249},"cookie preferences","ot-sdk-btn",{"title":248,"links":696,"subMenu":704},[697,701],{"text":698,"config":699},"DevSecOps platform",{"href":214,"dataGaName":700,"dataGaLocation":631},"devsecops platform",{"text":271,"config":702},{"href":221,"dataGaName":703,"dataGaLocation":631},"ai-assisted development",[705],{"title":17,"links":706},[707,712,717,722,726,731,736,741],{"text":708,"config":709},"CICD",{"href":710,"dataGaName":711,"dataGaLocation":631},"/topics/ci-cd/","cicd",{"text":713,"config":714},"GitOps",{"href":715,"dataGaName":716,"dataGaLocation":631},"/topics/gitops/","gitops",{"text":718,"config":719},"DevOps",{"href":720,"dataGaName":721,"dataGaLocation":631},"/topics/devops/","devops",{"text":723,"config":724},"Version Control",{"href":23,"dataGaName":725,"dataGaLocation":631},"version control",{"text":727,"config":728},"DevSecOps",{"href":729,"dataGaName":730,"dataGaLocation":631},"/topics/devsecops/","devsecops",{"text":732,"config":733},"Cloud Native",{"href":734,"dataGaName":735,"dataGaLocation":631},"/topics/cloud-native/","cloud native",{"text":737,"config":738},"AI for Coding",{"href":739,"dataGaName":740,"dataGaLocation":631},"/topics/devops/ai-for-coding/","ai for coding",{"text":742,"config":743},"Agentic AI",{"href":744,"dataGaName":745,"dataGaLocation":631},"/topics/agentic-ai/","agentic ai",{"title":747,"links":748},"Solutions",[749,751,753,758,762,765,769,772,774,777,780,785],{"text":291,"config":750},{"href":286,"dataGaName":291,"dataGaLocation":631},{"text":280,"config":752},{"href":263,"dataGaName":264,"dataGaLocation":631},{"text":754,"config":755},"Agile development",{"href":756,"dataGaName":757,"dataGaLocation":631},"/solutions/agile-delivery/","agile delivery",{"text":759,"config":760},"SCM",{"href":119,"dataGaName":761,"dataGaLocation":631},"source code management",{"text":708,"config":763},{"href":269,"dataGaName":764,"dataGaLocation":631},"continuous integration & delivery",{"text":766,"config":767},"Value stream management",{"href":319,"dataGaName":768,"dataGaLocation":631},"value stream management",{"text":713,"config":770},{"href":771,"dataGaName":716,"dataGaLocation":631},"/solutions/gitops/",{"text":329,"config":773},{"href":331,"dataGaName":332,"dataGaLocation":631},{"text":775,"config":776},"Small business",{"href":336,"dataGaName":337,"dataGaLocation":631},{"text":778,"config":779},"Public sector",{"href":341,"dataGaName":342,"dataGaLocation":631},{"text":781,"config":782},"Education",{"href":783,"dataGaName":784,"dataGaLocation":631},"/solutions/education/","education",{"text":786,"config":787},"Financial services",{"href":788,"dataGaName":789,"dataGaLocation":631},"/solutions/finance/","financial services",{"title":349,"links":791},[792,794,796,798,801,803,805,807,809,811,813,815,817],{"text":360,"config":793},{"href":362,"dataGaName":363,"dataGaLocation":631},{"text":365,"config":795},{"href":367,"dataGaName":368,"dataGaLocation":631},{"text":370,"config":797},{"href":372,"dataGaName":373,"dataGaLocation":631},{"text":375,"config":799},{"href":377,"dataGaName":800,"dataGaLocation":631},"docs",{"text":398,"config":802},{"href":400,"dataGaName":401,"dataGaLocation":631},{"text":393,"config":804},{"href":395,"dataGaName":396,"dataGaLocation":631},{"text":403,"config":806},{"href":405,"dataGaName":406,"dataGaLocation":631},{"text":416,"config":808},{"href":418,"dataGaName":419,"dataGaLocation":631},{"text":408,"config":810},{"href":410,"dataGaName":411,"dataGaLocation":631},{"text":421,"config":812},{"href":423,"dataGaName":424,"dataGaLocation":631},{"text":426,"config":814},{"href":428,"dataGaName":429,"dataGaLocation":631},{"text":431,"config":816},{"href":433,"dataGaName":434,"dataGaLocation":631},{"text":436,"config":818},{"href":438,"dataGaName":439,"dataGaLocation":631},{"title":454,"links":820},[821,823,825,827,829,831,833,837,842,844,846,848],{"text":461,"config":822},{"href":463,"dataGaName":456,"dataGaLocation":631},{"text":466,"config":824},{"href":468,"dataGaName":469,"dataGaLocation":631},{"text":474,"config":826},{"href":476,"dataGaName":477,"dataGaLocation":631},{"text":479,"config":828},{"href":481,"dataGaName":482,"dataGaLocation":631},{"text":484,"config":830},{"href":486,"dataGaName":487,"dataGaLocation":631},{"text":489,"config":832},{"href":491,"dataGaName":492,"dataGaLocation":631},{"text":834,"config":835},"Sustainability",{"href":836,"dataGaName":834,"dataGaLocation":631},"/sustainability/",{"text":838,"config":839},"Diversity, inclusion and belonging (DIB)",{"href":840,"dataGaName":841,"dataGaLocation":631},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":494,"config":843},{"href":496,"dataGaName":497,"dataGaLocation":631},{"text":504,"config":845},{"href":506,"dataGaName":507,"dataGaLocation":631},{"text":509,"config":847},{"href":511,"dataGaName":512,"dataGaLocation":631},{"text":849,"config":850},"Modern Slavery Transparency Statement",{"href":851,"dataGaName":852,"dataGaLocation":631},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":854},[855,857,859],{"text":681,"config":856},{"href":683,"dataGaName":684,"dataGaLocation":631},{"text":686,"config":858},{"href":688,"dataGaName":689,"dataGaLocation":631},{"text":691,"config":860},{"dataGaName":693,"dataGaLocation":631,"id":694,"isOneTrustButton":249},"content:shared:en-us:main-footer.yml","Main Footer","shared/en-us/main-footer.yml","shared/en-us/main-footer",{"_path":866,"_dir":181,"_draft":6,"_partial":6,"_locale":7,"header":867,"eyebrow":868,"blurb":869,"button":870,"secondaryButton":874,"_id":876,"_type":174,"title":877,"_source":175,"_file":878,"_stem":879,"_extension":178},"/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":189,"config":871},{"href":872,"dataGaName":192,"dataGaLocation":873},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":194,"config":875},{"href":196,"dataGaName":197,"dataGaLocation":873},"content:shared:en-us:next-steps.yml","Next Steps","shared/en-us/next-steps.yml","shared/en-us/next-steps",{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":881,"content":882,"_id":173,"_type":174,"title":7,"_source":175,"_file":176,"_stem":177,"_extension":178},{"title":9,"ogTitle":9,"description":10,"ogDescription":10},[883,891,894,943,953,969],{"type":13,"componentName":13,"componentContent":884},{"crumbs":885},[886,888,890],{"title":17,"config":887},{"href":19},{"title":21,"config":889},{"href":23},{"title":25},{"type":27,"componentName":27,"componentContent":892},{"title":9,"text":29,"config":893},{"id":31,"twoColumns":6},{"type":33,"componentName":33,"componentContent":895},{"anchors":896,"components":914},{"text":36,"data":897},[898,900,902,904,906,908,910,912],{"text":39,"config":899},{"href":41},{"text":43,"config":901},{"href":45},{"text":47,"config":903},{"href":49},{"text":51,"config":905},{"href":53},{"text":55,"config":907},{"href":57},{"text":59,"config":909},{"href":61},{"text":63,"config":911},{"href":65},{"text":67,"config":913},{"href":69},[915,918,921,924,927,930,933,936,939],{"type":72,"componentName":72,"componentContent":916},{"header":39,"text":74,"config":917},{"id":76},{"type":72,"componentName":72,"componentContent":919},{"header":43,"text":79,"config":920},{"id":81},{"type":72,"componentName":72,"componentContent":922},{"header":47,"text":84,"config":923},{"id":86},{"type":72,"componentName":72,"componentContent":925},{"header":51,"text":89,"config":926},{"id":91},{"type":72,"componentName":72,"componentContent":928},{"header":55,"text":94,"config":929},{"id":96},{"type":72,"componentName":72,"componentContent":931},{"header":59,"text":99,"config":932},{"id":101},{"type":72,"componentName":72,"componentContent":934},{"header":63,"text":104,"config":935},{"id":106},{"type":72,"componentName":72,"componentContent":937},{"header":67,"text":109,"config":938},{"id":111},{"type":113,"componentName":113,"componentContent":940},{"subtitle":115,"primaryButton":941},{"text":117,"config":942},{"href":119},{"type":121,"componentName":121,"componentContent":944},{"header":123,"groups":945},[946],{"questions":947},[948,949,950,951,952],{"question":128,"answer":129},{"question":131,"answer":132},{"question":134,"answer":135},{"question":137,"answer":138},{"question":140,"answer":141},{"type":143,"componentName":143,"componentContent":954},{"header":145,"tabs":955},[956],{"name":148,"items":957,"config":968},[958,963],{"header":151,"type":152,"image":959,"link":961},{"altText":151,"config":960},{"src":155},{"text":117,"config":962},{"href":158,"icon":159,"modal":6},{"header":161,"type":162,"image":964,"link":966},{"altText":161,"config":965},{"src":165},{"text":117,"config":967},{"href":168,"icon":169,"modal":6},{"key":148},{"type":172,"componentName":172},1761852437169]