[{"data":1,"prerenderedAt":1029},["ShallowReactive",2],{"/blog/7-git-personalities":3,"navigation-en-us":241,"banner-en-us":669,"footer-en-us":679,"blog-post-authors-en-us-Job van der Voort":924,"blog-related-posts-en-us-7-git-personalities":940,"blog-promotions-en-us":965,"next-steps-en-us":1019},{"id":4,"title":5,"authors":6,"body":8,"category":217,"date":218,"description":219,"extension":220,"externalUrl":221,"faq":221,"featured":222,"heroImage":223,"meta":224,"navigation":231,"path":232,"seo":233,"slug":237,"stem":238,"tags":221,"template":239,"updatedDate":221,"__hash__":240},"blogPosts/en-us/blog/7-git-personalities.md","7 Git personalities, which one are you?",[7],"Job van der Voort",{"type":9,"value":10,"toc":192},"minimark",[11,20,25,31,34,37,42,45,49,62,65,69,76,80,83,86,91,95,98,102,110,113,116,120,123,126,130,133,136,140,143,147,155,158,161,165,168,172,175,178,185,189],[12,13,14,15,19],"p",{},"Working on an open source project, we're so lucky to receive many merge -and\npull requests. Not unlike dating, we see a number of different ",[16,17,18],"em",{},"git personalities",".\nDo you recognize yourself or one of your colleagues in one of them? Let us know in the comments\nor tweet about it with #gitlab.",[21,22,24],"h2",{"id":23},"_1-the-build-breaker","1. The Build Breaker",[26,27,28],"blockquote",{},[12,29,30],{},"Oh this is a small change, I'll just push it to master..",[12,32,33],{},"We all do it. A small change, preferably at the end of the week, it's not\ngoing to hurt anyone..",[12,35,36],{},"How wrong you are. You just broke the build for everyone\nelse. Either you'll have to fix this yourself quickly or you're leaving your\nteam to clean up your mess.",[38,39,41],"h3",{"id":40},"fixing-the-breaker","Fixing the breaker",[12,43,44],{},"Run relevant and fast tests locally, always work with merge requests and only merge when the build\npasses.",[21,46,48],{"id":47},"_2-the-repeater","2. The Repeater",[26,50,51],{},[52,53,58],"pre",{"className":54,"code":56,"language":57},[55],"language-text","bf30a5b - cool new feature\ndfd934s - cool new feature\n98dfjek - cool new feature\n","text",[59,60,56],"code",{"__ignoreMap":61},"",[12,63,64],{},"If git history was like actual history, the repeater's history books would only\ncontain only a single sentence, repeated ad infinitum. The repeater repeats a single\nsentence with every commit. To know what a Repeater did, the SHA tells you\nas much as the commit message.",[38,66,68],{"id":67},"fixing-the-broken-record","Fixing the broken record",[12,70,71,72,75],{},"Write clear commit messages that highlight the ",[16,73,74],{},"intent"," of the commit.\nThis makes it easy to navigate through git history, to judge commits\nand find potential sources of problems.",[21,77,79],{"id":78},"_3-the-wipper","3. The Wipper",[12,81,82],{},"You thought you were almost done and created a merge request, but still had to\nmake a few more changes. Maybe while making those changes, you could refactor\na bit more. And possibly improve the alignment in some other places and before\nyou know it, your merge request is open for more than a month.",[12,84,85],{},"If this sounds like you, you might be a Wipper. The Wipper leaves their merge\nrequests on WIP forever. Ask yourself:",[26,87,88],{},[12,89,90],{},"Do you believe that your work will ever stop being in progress?",[38,92,94],{"id":93},"merging-the-wip","Merging the Wip",[12,96,97],{},"Try to follow test-driven development. Start with high-level tests and go from\nthere. When those tests pass, you're done. Stop it. Ask someone to review and\nmerge it and start with something new. Progress is many small steps.",[21,99,101],{"id":100},"_4-the-premature-committer","4. The Premature committer",[26,103,104],{},[52,105,108],{"className":106,"code":107,"language":57},[55],"bf30a5b - add capital\n9d5550a - add missing period\n179c001 - remove 'the'\n983hfk2 - remove trailing space\n",[59,109,107],{"__ignoreMap":61},[12,111,112],{},"Young premature committers save their reports every sentence. Growing up\nwith the magic of git, they took it one step further and commit every singly\ntiny change.",[12,114,115],{},"Premature committers and rebasers are natural enemies and are known to\nannoy one another. Don't put them in the same team if you can prevent it.",[38,117,119],{"id":118},"squashing-the-premature-committer","Squashing the premature committer",[12,121,122],{},"Let's be honest, premature committer, you don't really push every commit to\nthe remote, do you? If not, then you win nothing by committing every single change!",[12,124,125],{},"If that doesn't wake you up, you should know that the next remedy is rebasing..",[21,127,129],{"id":128},"_5-the-rebaser","5. The Rebaser",[12,131,132],{},"Adding a new import utility to an open source project? UI, tests, back-end\nall in place? Awesome! In one commit? Not awesome.",[12,134,135],{},"You probably mean well, Rebaser. You write beautiful code and you know some\ngit-fu. But remember that with great power comes great responsibility:\nIf your feature breaks it'll be more likely to be stripped out in its entirety\nas a single commit, rather than having someone go through your history to see\nwhere it went wrong.",[38,137,139],{"id":138},"grounding-the-rebaser","Grounding the Rebaser",[12,141,142],{},"You're probably forgiven. Most open source projects welcome you, but\nkeep your merge requests reasonable. We use git for a reason.",[21,144,146],{"id":145},"_6-the-merger","6. The Merger",[26,148,149],{},[52,150,153],{"className":151,"code":152,"language":57},[55],"00fd402 - Merge branch 'master' into 'feature_x'\n34jkdi9 - Merge branch 'master' into 'feature_x'\nsvc98u2 - Merge branch 'master' into 'feature_x'\n",[59,154,152],{"__ignoreMap":61},[12,156,157],{},"As the Merger, you worked really hard on that new feature. At night or during\nlunch breaks: where everyone is being paid for this, you are not. That comes\nwith a cost, you start to run behind on changes and the easiest solution?\nJust merge in master!",[12,159,160],{},"The Merger's merge request will merge, that's for sure, but it's not pretty.",[38,162,164],{"id":163},"cancelling-the-merger","Cancelling the Merger",[12,166,167],{},"Keep your merge requests small and only start on what you can actually finish.\nOnly merge when needed. Not even before the merge request.\nJust make sure it merges cleanly.",[21,169,171],{"id":170},"_7-the-denier","7. The Denier",[12,173,174],{},"The Denier is the evil twin of the Build Breaker.",[12,176,177],{},"But really, the tests were all green on your machine! It only broke after\nsomeone else did a commit! Or even worse: the failing test is not related to\nyour code!",[12,179,180,181,184],{},"Sure, Denier, sure. We'll see what ",[59,182,183],{},"git bisect"," tells us..",[38,186,188],{"id":187},"admitting-being-a-denier","Admitting being a Denier",[12,190,191],{},"You are responsible for more than your contribution. You are responsible for\nthe healthy continuation of the project. Show you responsibility, be proud\nto be solver of problems, not a creator of issues and fix those failing tests.\nEveryone will like you a little bit more.",{"title":61,"searchDepth":193,"depth":193,"links":194},2,[195,199,202,205,208,211,214],{"id":23,"depth":193,"text":24,"children":196},[197],{"id":40,"depth":198,"text":41},3,{"id":47,"depth":193,"text":48,"children":200},[201],{"id":67,"depth":198,"text":68},{"id":78,"depth":193,"text":79,"children":203},[204],{"id":93,"depth":198,"text":94},{"id":100,"depth":193,"text":101,"children":206},[207],{"id":118,"depth":198,"text":119},{"id":128,"depth":193,"text":129,"children":209},[210],{"id":138,"depth":198,"text":139},{"id":145,"depth":193,"text":146,"children":212},[213],{"id":163,"depth":198,"text":164},{"id":170,"depth":193,"text":171,"children":215},[216],{"id":187,"depth":198,"text":188},"insights","2015-01-27","Working on an open source projects we receive many merge and pull requests and see a number of different git personalities. Do you recognize yourself?","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749684330/Blog/Hero%20Images/git_personalities.jpg",{"excerpt":225},{"type":9,"value":226},[227],[12,228,14,229,19],{},[16,230,18],{},true,"/en-us/blog/7-git-personalities",{"title":5,"description":219,"ogTitle":5,"ogDescription":219,"noIndex":222,"ogImage":223,"ogUrl":234,"ogSiteName":235,"ogType":236,"canonicalUrls":234},"https://about.gitlab.com/blog/7-git-personalities","https://about.gitlab.com","article","7-git-personalities","en-us/blog/7-git-personalities","BlogPost","XebNBtXpkdavbMbjhyqooJ5kOAqIc6FC4h3Grb0iDyg",{"logo":242,"freeTrial":247,"sales":252,"login":257,"items":262,"search":589,"minimal":620,"duo":639,"switchNav":648,"pricingDeployment":659},{"config":243},{"href":244,"dataGaName":245,"dataGaLocation":246},"/","gitlab logo","header",{"text":248,"config":249},"Get free trial",{"href":250,"dataGaName":251,"dataGaLocation":246},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":253,"config":254},"Request a demo",{"href":255,"dataGaName":256,"dataGaLocation":246},"/sales/?contact-topic=request-demo","sales",{"text":258,"config":259},"Sign in",{"href":260,"dataGaName":261,"dataGaLocation":246},"https://gitlab.com/users/sign_in/","sign in",[263,292,392,397,511,567],{"text":264,"config":265,"menu":267},"Platform",{"dataNavLevelOne":266},"platform",{"type":268,"columns":269},"cards",[270,276,284],{"title":264,"description":271,"link":272},"The intelligent orchestration platform for DevSecOps",{"text":273,"config":274},"Explore our Platform",{"href":275,"dataGaName":266,"dataGaLocation":246},"/platform/",{"title":277,"description":278,"link":279},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":280,"config":281},"Meet GitLab Duo",{"href":282,"dataGaName":283,"dataGaLocation":246},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":285,"description":286,"link":287},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":288,"config":289},"Learn more",{"href":290,"dataGaName":291,"dataGaLocation":246},"/why-gitlab/","why gitlab",{"text":293,"left":231,"config":294,"menu":296},"Product",{"dataNavLevelOne":295},"solutions",{"type":297,"link":298,"columns":302,"feature":371},"lists",{"text":299,"config":300},"View all Solutions",{"href":301,"dataGaName":295,"dataGaLocation":246},"/solutions/",[303,327,350],{"title":304,"description":305,"link":306,"items":311},"Automation","CI/CD and automation to accelerate deployment",{"config":307},{"icon":308,"href":309,"dataGaName":310,"dataGaLocation":246},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[312,316,319,323],{"text":313,"config":314},"CI/CD",{"href":315,"dataGaLocation":246,"dataGaName":313},"/solutions/continuous-integration/",{"text":277,"config":317},{"href":282,"dataGaLocation":246,"dataGaName":318},"gitlab duo agent platform - product menu",{"text":320,"config":321},"Source Code Management",{"href":322,"dataGaLocation":246,"dataGaName":320},"/solutions/source-code-management/",{"text":324,"config":325},"Automated Software Delivery",{"href":309,"dataGaLocation":246,"dataGaName":326},"Automated software delivery",{"title":328,"description":329,"link":330,"items":335},"Security","Deliver code faster without compromising security",{"config":331},{"href":332,"dataGaName":333,"dataGaLocation":246,"icon":334},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[336,340,345],{"text":337,"config":338},"Application Security Testing",{"href":332,"dataGaName":339,"dataGaLocation":246},"Application security testing",{"text":341,"config":342},"Software Supply Chain Security",{"href":343,"dataGaLocation":246,"dataGaName":344},"/solutions/supply-chain/","Software supply chain security",{"text":346,"config":347},"Software Compliance",{"href":348,"dataGaName":349,"dataGaLocation":246},"/solutions/software-compliance/","software compliance",{"title":351,"link":352,"items":357},"Measurement",{"config":353},{"icon":354,"href":355,"dataGaName":356,"dataGaLocation":246},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[358,362,366],{"text":359,"config":360},"Visibility & Measurement",{"href":355,"dataGaLocation":246,"dataGaName":361},"Visibility and Measurement",{"text":363,"config":364},"Value Stream Management",{"href":365,"dataGaLocation":246,"dataGaName":363},"/solutions/value-stream-management/",{"text":367,"config":368},"Analytics & Insights",{"href":369,"dataGaLocation":246,"dataGaName":370},"/solutions/analytics-and-insights/","Analytics and insights",{"title":372,"type":297,"items":373},"GitLab for",[374,380,386],{"text":375,"config":376},"Enterprise",{"icon":377,"href":378,"dataGaLocation":246,"dataGaName":379},"Building","/enterprise/","enterprise",{"text":381,"config":382},"Small Business",{"icon":383,"href":384,"dataGaLocation":246,"dataGaName":385},"Work","/small-business/","small business",{"text":387,"config":388},"Public Sector",{"icon":389,"href":390,"dataGaLocation":246,"dataGaName":391},"Organization","/solutions/public-sector/","public sector",{"text":393,"config":394},"Pricing",{"href":395,"dataGaName":396,"dataGaLocation":246,"dataNavLevelOne":396},"/pricing/","pricing",{"text":398,"config":399,"menu":401},"Resources",{"dataNavLevelOne":400},"resources",{"type":297,"link":402,"columns":406,"feature":500},{"text":403,"config":404},"View all resources",{"href":405,"dataGaName":400,"dataGaLocation":246},"/resources/",[407,440,467],{"title":408,"items":409},"Getting started",[410,415,420,425,430,435],{"text":411,"config":412},"Install",{"href":413,"dataGaName":414,"dataGaLocation":246},"/install/","install",{"text":416,"config":417},"Quick start guides",{"href":418,"dataGaName":419,"dataGaLocation":246},"/get-started/","quick setup checklists",{"text":421,"config":422},"Learn",{"href":423,"dataGaLocation":246,"dataGaName":424},"https://university.gitlab.com/","learn",{"text":426,"config":427},"Product documentation",{"href":428,"dataGaName":429,"dataGaLocation":246},"https://docs.gitlab.com/","product documentation",{"text":431,"config":432},"Best practice videos",{"href":433,"dataGaName":434,"dataGaLocation":246},"/getting-started-videos/","best practice videos",{"text":436,"config":437},"Integrations",{"href":438,"dataGaName":439,"dataGaLocation":246},"/integrations/","integrations",{"title":441,"items":442},"Discover",[443,448,453,458,462],{"text":444,"config":445},"Customer success stories",{"href":446,"dataGaName":447,"dataGaLocation":246},"/customers/","customer success stories",{"text":449,"config":450},"Blog",{"href":451,"dataGaName":452,"dataGaLocation":246},"/blog/","blog",{"text":454,"config":455},"Demo Hub",{"href":456,"dataGaName":457,"dataGaLocation":246},"/demo-hub/","demo hub",{"text":459,"config":460},"The Source",{"href":461,"dataGaName":452,"dataGaLocation":246},"/the-source/",{"text":463,"config":464},"Remote",{"href":465,"dataGaName":466,"dataGaLocation":246},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":468,"items":469},"Connect",[470,475,480,485,490,495],{"text":471,"config":472},"GitLab Services",{"href":473,"dataGaName":474,"dataGaLocation":246},"/services/","services",{"text":476,"config":477},"Contribute",{"href":478,"dataGaName":479,"dataGaLocation":246},"https://contributors.gitlab.com","contribute",{"text":481,"config":482},"Community",{"href":483,"dataGaName":484,"dataGaLocation":246},"/community/","community",{"text":486,"config":487},"Forum",{"href":488,"dataGaName":489,"dataGaLocation":246},"https://forum.gitlab.com/","forum",{"text":491,"config":492},"Events",{"href":493,"dataGaName":494,"dataGaLocation":246},"/events/","events",{"text":496,"config":497},"Partners",{"href":498,"dataGaName":499,"dataGaLocation":246},"/partners/","partners",{"config":501,"title":504,"text":505,"link":506},{"background":502,"textColor":503},"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":507,"config":508},"Read the latest",{"href":509,"dataGaName":510,"dataGaLocation":246},"/whats-new/","whats new",{"text":512,"config":513,"menu":515},"Company",{"dataNavLevelOne":514},"company",{"type":297,"columns":516},[517],{"items":518},[519,524,530,532,537,542,547,552,557,562],{"text":520,"config":521},"About",{"href":522,"dataGaName":523,"dataGaLocation":246},"/company/","about",{"text":525,"config":526,"footerGa":529},"Jobs",{"href":527,"dataGaName":528,"dataGaLocation":246},"/jobs/","jobs",{"dataGaName":528},{"text":491,"config":531},{"href":493,"dataGaName":494,"dataGaLocation":246},{"text":533,"config":534},"Leadership",{"href":535,"dataGaName":536,"dataGaLocation":246},"/company/team/e-group/","leadership",{"text":538,"config":539},"Handbook",{"href":540,"dataGaName":541,"dataGaLocation":246},"https://handbook.gitlab.com/","handbook",{"text":543,"config":544},"Investor relations",{"href":545,"dataGaName":546,"dataGaLocation":246},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":548,"config":549},"Trust Center",{"href":550,"dataGaName":551,"dataGaLocation":246},"/security/","trust center",{"text":553,"config":554},"AI Transparency Center",{"href":555,"dataGaName":556,"dataGaLocation":246},"/ai-transparency-center/","ai transparency center",{"text":558,"config":559},"Newsletter",{"href":560,"dataGaName":561,"dataGaLocation":246},"/company/contact/#contact-forms","newsletter",{"text":563,"config":564},"Press",{"href":565,"dataGaName":566,"dataGaLocation":246},"/press/","press",{"text":568,"config":569,"menu":570},"Contact us",{"dataNavLevelOne":514},{"type":297,"columns":571},[572],{"items":573},[574,579,584],{"text":575,"config":576},"Talk to sales",{"href":577,"dataGaName":578,"dataGaLocation":246},"/sales/","talk to sales",{"text":580,"config":581},"Support portal",{"href":582,"dataGaName":583,"dataGaLocation":246},"https://support.gitlab.com/hc/en-us","support portal",{"text":585,"config":586},"Customer portal",{"href":587,"dataGaName":588,"dataGaLocation":246},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":590,"login":591,"suggestions":598},"Close",{"text":592,"link":593},"To search repositories and projects, login to",{"text":594,"config":595},"gitlab.com",{"href":260,"dataGaName":596,"dataGaLocation":597},"search login","search",{"text":599,"default":600},"Suggestions",[601,603,607,609,613,617],{"text":277,"config":602},{"href":282,"dataGaName":277,"dataGaLocation":597},{"text":604,"config":605},"Code Suggestions (AI)",{"href":606,"dataGaName":604,"dataGaLocation":597},"/solutions/code-suggestions/",{"text":313,"config":608},{"href":315,"dataGaName":313,"dataGaLocation":597},{"text":610,"config":611},"GitLab on AWS",{"href":612,"dataGaName":610,"dataGaLocation":597},"/partners/technology-partners/aws/",{"text":614,"config":615},"GitLab on Google Cloud",{"href":616,"dataGaName":614,"dataGaLocation":597},"/partners/technology-partners/google-cloud-platform/",{"text":618,"config":619},"Why GitLab?",{"href":290,"dataGaName":618,"dataGaLocation":597},{"freeTrial":621,"mobileIcon":626,"desktopIcon":631,"secondaryButton":634},{"text":622,"config":623},"Start free trial",{"href":624,"dataGaName":251,"dataGaLocation":625},"https://gitlab.com/-/trials/new/","nav",{"altText":627,"config":628},"Gitlab Icon",{"src":629,"dataGaName":630,"dataGaLocation":625},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":627,"config":632},{"src":633,"dataGaName":630,"dataGaLocation":625},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":635,"config":636},"Get Started",{"href":637,"dataGaName":638,"dataGaLocation":625},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":640,"mobileIcon":644,"desktopIcon":646},{"text":641,"config":642},"Learn more about GitLab Duo",{"href":282,"dataGaName":643,"dataGaLocation":625},"gitlab duo",{"altText":627,"config":645},{"src":629,"dataGaName":630,"dataGaLocation":625},{"altText":627,"config":647},{"src":633,"dataGaName":630,"dataGaLocation":625},{"button":649,"mobileIcon":654,"desktopIcon":656},{"text":650,"config":651},"/switch",{"href":652,"dataGaName":653,"dataGaLocation":625},"#contact","switch",{"altText":627,"config":655},{"src":629,"dataGaName":630,"dataGaLocation":625},{"altText":627,"config":657},{"src":658,"dataGaName":630,"dataGaLocation":625},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":660,"mobileIcon":665,"desktopIcon":667},{"text":661,"config":662},"Back to pricing",{"href":395,"dataGaName":663,"dataGaLocation":625,"icon":664},"back to pricing","GoBack",{"altText":627,"config":666},{"src":629,"dataGaName":630,"dataGaLocation":625},{"altText":627,"config":668},{"src":633,"dataGaName":630,"dataGaLocation":625},{"title":670,"titleMobile":671,"button":672,"config":677},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":288,"config":673},{"href":674,"dataGaName":675,"dataGaLocation":676},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":678,"disabled":222},"release",{"data":680},{"text":681,"source":682,"edit":688,"contribute":693,"config":698,"items":703,"minimal":913},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":683,"config":684},"View page source",{"href":685,"dataGaName":686,"dataGaLocation":687},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":689,"config":690},"Edit this page",{"href":691,"dataGaName":692,"dataGaLocation":687},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":694,"config":695},"Please contribute",{"href":696,"dataGaName":697,"dataGaLocation":687},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":699,"facebook":700,"youtube":701,"linkedin":702},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[704,751,805,849,881],{"title":393,"links":705,"subMenu":720},[706,710,715],{"text":707,"config":708},"View plans",{"href":395,"dataGaName":709,"dataGaLocation":687},"view plans",{"text":711,"config":712},"Why Premium?",{"href":713,"dataGaName":714,"dataGaLocation":687},"/pricing/premium/","why premium",{"text":716,"config":717},"Why Ultimate?",{"href":718,"dataGaName":719,"dataGaLocation":687},"/pricing/ultimate/","why ultimate",[721],{"title":722,"links":723},"Contact Us",[724,727,729,731,736,741,746],{"text":725,"config":726},"Contact sales",{"href":577,"dataGaName":256,"dataGaLocation":687},{"text":580,"config":728},{"href":582,"dataGaName":583,"dataGaLocation":687},{"text":585,"config":730},{"href":587,"dataGaName":588,"dataGaLocation":687},{"text":732,"config":733},"Status",{"href":734,"dataGaName":735,"dataGaLocation":687},"https://status.gitlab.com/","status",{"text":737,"config":738},"Terms of use",{"href":739,"dataGaName":740,"dataGaLocation":687},"/terms/","terms of use",{"text":742,"config":743},"Privacy statement",{"href":744,"dataGaName":745,"dataGaLocation":687},"/privacy/","privacy statement",{"text":747,"config":748},"Cookie preferences",{"dataGaName":749,"dataGaLocation":687,"id":750,"isOneTrustButton":231},"cookie preferences","ot-sdk-btn",{"title":293,"links":752,"subMenu":761},[753,757],{"text":754,"config":755},"DevSecOps platform",{"href":275,"dataGaName":756,"dataGaLocation":687},"devsecops platform",{"text":758,"config":759},"AI-Assisted Development",{"href":282,"dataGaName":760,"dataGaLocation":687},"ai-assisted development",[762],{"title":763,"links":764},"Topics",[765,770,775,780,785,790,795,800],{"text":766,"config":767},"CICD",{"href":768,"dataGaName":769,"dataGaLocation":687},"/topics/ci-cd/","cicd",{"text":771,"config":772},"GitOps",{"href":773,"dataGaName":774,"dataGaLocation":687},"/topics/gitops/","gitops",{"text":776,"config":777},"DevOps",{"href":778,"dataGaName":779,"dataGaLocation":687},"/topics/devops/","devops",{"text":781,"config":782},"Version Control",{"href":783,"dataGaName":784,"dataGaLocation":687},"/topics/version-control/","version control",{"text":786,"config":787},"DevSecOps",{"href":788,"dataGaName":789,"dataGaLocation":687},"/topics/devsecops/","devsecops",{"text":791,"config":792},"Cloud Native",{"href":793,"dataGaName":794,"dataGaLocation":687},"/topics/cloud-native/","cloud native",{"text":796,"config":797},"AI for Coding",{"href":798,"dataGaName":799,"dataGaLocation":687},"/topics/devops/ai-for-coding/","ai for coding",{"text":801,"config":802},"Agentic AI",{"href":803,"dataGaName":804,"dataGaLocation":687},"/topics/agentic-ai/","agentic ai",{"title":806,"links":807},"Solutions",[808,810,812,817,821,824,828,831,833,836,839,844],{"text":337,"config":809},{"href":332,"dataGaName":337,"dataGaLocation":687},{"text":326,"config":811},{"href":309,"dataGaName":310,"dataGaLocation":687},{"text":813,"config":814},"Agile development",{"href":815,"dataGaName":816,"dataGaLocation":687},"/solutions/agile-delivery/","agile delivery",{"text":818,"config":819},"SCM",{"href":322,"dataGaName":820,"dataGaLocation":687},"source code management",{"text":766,"config":822},{"href":315,"dataGaName":823,"dataGaLocation":687},"continuous integration & delivery",{"text":825,"config":826},"Value stream management",{"href":365,"dataGaName":827,"dataGaLocation":687},"value stream management",{"text":771,"config":829},{"href":830,"dataGaName":774,"dataGaLocation":687},"/solutions/gitops/",{"text":375,"config":832},{"href":378,"dataGaName":379,"dataGaLocation":687},{"text":834,"config":835},"Small business",{"href":384,"dataGaName":385,"dataGaLocation":687},{"text":837,"config":838},"Public sector",{"href":390,"dataGaName":391,"dataGaLocation":687},{"text":840,"config":841},"Education",{"href":842,"dataGaName":843,"dataGaLocation":687},"/solutions/education/","education",{"text":845,"config":846},"Financial services",{"href":847,"dataGaName":848,"dataGaLocation":687},"/solutions/finance/","financial services",{"title":398,"links":850},[851,853,855,857,860,862,865,867,869,871,873,875,877,879],{"text":411,"config":852},{"href":413,"dataGaName":414,"dataGaLocation":687},{"text":416,"config":854},{"href":418,"dataGaName":419,"dataGaLocation":687},{"text":421,"config":856},{"href":423,"dataGaName":424,"dataGaLocation":687},{"text":426,"config":858},{"href":428,"dataGaName":859,"dataGaLocation":687},"docs",{"text":449,"config":861},{"href":451,"dataGaName":452,"dataGaLocation":687},{"text":863,"config":864},"What's new",{"href":509,"dataGaName":510,"dataGaLocation":687},{"text":444,"config":866},{"href":446,"dataGaName":447,"dataGaLocation":687},{"text":463,"config":868},{"href":465,"dataGaName":466,"dataGaLocation":687},{"text":471,"config":870},{"href":473,"dataGaName":474,"dataGaLocation":687},{"text":476,"config":872},{"href":478,"dataGaName":479,"dataGaLocation":687},{"text":481,"config":874},{"href":483,"dataGaName":484,"dataGaLocation":687},{"text":486,"config":876},{"href":488,"dataGaName":489,"dataGaLocation":687},{"text":491,"config":878},{"href":493,"dataGaName":494,"dataGaLocation":687},{"text":496,"config":880},{"href":498,"dataGaName":499,"dataGaLocation":687},{"title":512,"links":882},[883,885,887,889,891,893,897,902,904,906,908],{"text":520,"config":884},{"href":522,"dataGaName":514,"dataGaLocation":687},{"text":525,"config":886},{"href":527,"dataGaName":528,"dataGaLocation":687},{"text":533,"config":888},{"href":535,"dataGaName":536,"dataGaLocation":687},{"text":538,"config":890},{"href":540,"dataGaName":541,"dataGaLocation":687},{"text":543,"config":892},{"href":545,"dataGaName":546,"dataGaLocation":687},{"text":894,"config":895},"Sustainability",{"href":896,"dataGaName":894,"dataGaLocation":687},"/sustainability/",{"text":898,"config":899},"Diversity, inclusion and belonging (DIB)",{"href":900,"dataGaName":901,"dataGaLocation":687},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":548,"config":903},{"href":550,"dataGaName":551,"dataGaLocation":687},{"text":558,"config":905},{"href":560,"dataGaName":561,"dataGaLocation":687},{"text":563,"config":907},{"href":565,"dataGaName":566,"dataGaLocation":687},{"text":909,"config":910},"Modern Slavery Transparency Statement",{"href":911,"dataGaName":912,"dataGaLocation":687},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":914},[915,918,921],{"text":916,"config":917},"Terms",{"href":739,"dataGaName":740,"dataGaLocation":687},{"text":919,"config":920},"Cookies",{"dataGaName":749,"dataGaLocation":687,"id":750,"isOneTrustButton":231},{"text":922,"config":923},"Privacy",{"href":744,"dataGaName":745,"dataGaLocation":687},[925],{"id":926,"title":927,"body":221,"config":928,"content":930,"description":221,"extension":934,"meta":935,"navigation":231,"path":936,"seo":937,"stem":938,"__hash__":939},"blogAuthors/en-us/blog/authors/job-van-der-voort.yml","Job Van Der Voort",{"template":929},"BlogAuthor",{"name":7,"config":931},{"headshot":932,"ctfId":933},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","Job-van-der-Voort","yml",{},"/en-us/blog/authors/job-van-der-voort",{},"en-us/blog/authors/job-van-der-voort","w8TOn_hGFgQQOv35VnObjxoMM-hviRbwtijFETooJCM",[941,949,957],{"title":942,"description":943,"heroImage":944,"category":217,"date":945,"authors":946,"slug":948,"externalUrl":221},"How we overhauled GitLab navigation","Users weren't getting what they needed from our navigation. Here are the steps we took to turn that experience around.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682884/Blog/Hero%20Images/navigation.jpg","2023-08-15",[947],"Ashley Knobloch","navigation-research-blog-post",{"title":950,"description":951,"heroImage":952,"category":217,"date":953,"authors":954,"slug":956,"externalUrl":221},"Beautifying our UI: Giving GitLab build features a fresh look","Get an inside look at how we are improving the usability of GitLab build features with multiple visual design improvements.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749682807/Blog/Hero%20Images/beautify.jpg","2023-07-05",[955],"Veethika Mishra","beautifying-of-our-ui",{"title":958,"description":959,"heroImage":960,"category":217,"date":961,"authors":962,"slug":964,"externalUrl":221},"4 best practices leading orgs to release software faster","GitLab's 2023 Global DevSecOps Survey illuminates the strategies that organizations deploying more frequently have in common.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663908/Blog/Hero%20Images/2023-devsecops-report-blog-banner2.png","2023-06-08",[963],"Kristina Weis","best-practices-leading-orgs-to-release-software-faster",{"promotions":966},[967,981,993,1005],{"id":968,"categories":969,"header":971,"text":972,"button":973,"image":978},"ai-modernization",[970],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":974,"config":975},"Get your AI maturity score",{"href":976,"dataGaName":977,"dataGaLocation":452},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":979},{"src":980},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":982,"categories":983,"header":985,"text":972,"button":986,"image":990},"devops-modernization",[984,789],"product","Are you just managing tools or shipping innovation?",{"text":987,"config":988},"Get your DevOps maturity score",{"href":989,"dataGaName":977,"dataGaLocation":452},"/assessments/devops-modernization-assessment/",{"config":991},{"src":992},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":994,"categories":995,"header":997,"text":972,"button":998,"image":1002},"security-modernization",[996],"security","Are you trading speed for security?",{"text":999,"config":1000},"Get your security maturity score",{"href":1001,"dataGaName":977,"dataGaLocation":452},"/assessments/security-modernization-assessment/",{"config":1003},{"src":1004},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1006,"paths":1007,"header":1010,"text":1011,"button":1012,"image":1017},"github-azure-migration",[1008,1009],"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":1013,"config":1014},"See how GitLab compares to GitHub",{"href":1015,"dataGaName":1016,"dataGaLocation":452},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1018},{"src":992},{"header":1020,"blurb":1021,"button":1022,"secondaryButton":1027},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1023,"config":1024},"Get your free trial",{"href":1025,"dataGaName":251,"dataGaLocation":1026},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":725,"config":1028},{"href":577,"dataGaName":256,"dataGaLocation":1026},1786803744236]