[{"data":1,"prerenderedAt":1547},["ShallowReactive",2],{"/de-de/blog/categories/open-source":3,"navigation-de-de":20,"banner-de-de":452,"footer-de-de":460,"open-source-category-page-total-items-de-de":701,"open-source-category-page-featured-de-de":702,"open-source-category-page-1-de-de":1488},{"id":4,"title":5,"body":6,"category":6,"config":7,"content":11,"description":6,"extension":12,"meta":13,"navigation":14,"path":15,"seo":16,"slug":6,"stem":18,"testContent":6,"type":6,"__hash__":19},"blogCategories/de-de/blog/categories/open-source.yml","Open Source",null,{"template":8,"slug":9,"hide":10},"BlogCategory","open-source",false,{"name":5},"yml",{},true,"/de-de/blog/categories/open-source",{"title":5,"description":17},"Browse articles related to Open Source on the GitLab Blog","de-de/blog/categories/open-source","3lZAO-pA8tPgqw5jdEaCqdzTxqgrM40KjbyHzl6xewQ",{"logo":21,"freeTrial":26,"sales":31,"login":36,"items":41,"search":370,"minimal":404,"duo":422,"switchNav":431,"pricingDeployment":442},{"config":22},{"href":23,"dataGaName":24,"dataGaLocation":25},"/de-de/","gitlab logo","header",{"text":27,"config":28},"Kostenlose Testversion anfordern",{"href":29,"dataGaName":30,"dataGaLocation":25},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":32,"config":33},"Demo anfordern",{"href":34,"dataGaName":35,"dataGaLocation":25},"/de-de/sales/?contact-topic=request-demo","sales",{"text":37,"config":38},"Anmelden",{"href":39,"dataGaName":40,"dataGaLocation":25},"https://gitlab.com/users/sign_in/","sign in",[42,71,173,178,292,348],{"text":43,"config":44,"menu":46},"Plattform",{"dataNavLevelOne":45},"platform",{"type":47,"columns":48},"cards",[49,55,63],{"title":43,"description":50,"link":51},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":52,"config":53},"Die Plattform erkunden",{"href":54,"dataGaName":45,"dataGaLocation":25},"/de-de/platform/",{"title":56,"description":57,"link":58},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":59,"config":60},"Lerne GitLab Duo kennen",{"href":61,"dataGaName":62,"dataGaLocation":25},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":64,"description":65,"link":66},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":67,"config":68},"Mehr erfahren",{"href":69,"dataGaName":70,"dataGaLocation":25},"/de-de/why-gitlab/","why gitlab",{"text":72,"left":14,"config":73,"menu":75},"Produkt",{"dataNavLevelOne":74},"solutions",{"type":76,"link":77,"columns":81,"feature":152},"lists",{"text":78,"config":79},"Alle Lösungen anzeigen",{"href":80,"dataGaName":74,"dataGaLocation":25},"/de-de/solutions/",[82,107,130],{"title":83,"description":84,"link":85,"items":90},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":86},{"icon":87,"href":88,"dataGaName":89,"dataGaLocation":25},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[91,95,98,103],{"text":92,"config":93},"CI/CD",{"href":94,"dataGaLocation":25,"dataGaName":92},"/de-de/solutions/continuous-integration/",{"text":56,"config":96},{"href":61,"dataGaLocation":25,"dataGaName":97},"gitlab duo agent platform - product menu",{"text":99,"config":100},"Quellcodeverwaltung",{"href":101,"dataGaLocation":25,"dataGaName":102},"/de-de/solutions/source-code-management/","Source Code Management",{"text":104,"config":105},"Automatische Softwarebereitstellung",{"href":88,"dataGaLocation":25,"dataGaName":106},"Automated software delivery",{"title":108,"description":109,"link":110,"items":115},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":111},{"href":112,"dataGaName":113,"dataGaLocation":25,"icon":114},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[116,120,125],{"text":117,"config":118},"Anwendungssicherheitstests",{"href":112,"dataGaName":119,"dataGaLocation":25},"Application security testing",{"text":121,"config":122},"Schutz der Software-Lieferkette",{"href":123,"dataGaLocation":25,"dataGaName":124},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":126,"config":127},"Software-Compliance",{"href":128,"dataGaName":129,"dataGaLocation":25},"/de-de/solutions/software-compliance/","software compliance",{"title":131,"link":132,"items":137},"Messung",{"config":133},{"icon":134,"href":135,"dataGaName":136,"dataGaLocation":25},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[138,142,147],{"text":139,"config":140},"Sichtbarkeit und Messung",{"href":135,"dataGaLocation":25,"dataGaName":141},"Visibility and Measurement",{"text":143,"config":144},"Wertstrommanagement",{"href":145,"dataGaLocation":25,"dataGaName":146},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":148,"config":149},"Analysen und Einblicke",{"href":150,"dataGaLocation":25,"dataGaName":151},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":153,"type":76,"items":154},"GitLab für",[155,161,167],{"text":156,"config":157},"Enterprise",{"icon":158,"href":159,"dataGaLocation":25,"dataGaName":160},"Building","/de-de/enterprise/","enterprise",{"text":162,"config":163},"Kleinunternehmen",{"icon":164,"href":165,"dataGaLocation":25,"dataGaName":166},"Work","/de-de/small-business/","small business",{"text":168,"config":169},"Öffentlicher Sektor",{"icon":170,"href":171,"dataGaLocation":25,"dataGaName":172},"Organization","/de-de/solutions/public-sector/","public sector",{"text":174,"config":175},"Preise",{"href":176,"dataGaName":177,"dataGaLocation":25,"dataNavLevelOne":177},"/de-de/pricing/","pricing",{"text":179,"config":180,"menu":182},"Ressourcen",{"dataNavLevelOne":181},"resources",{"type":76,"link":183,"columns":187,"feature":281},{"text":184,"config":185},"Alle Ressourcen anzeigen",{"href":186,"dataGaName":181,"dataGaLocation":25},"/de-de/resources/",[188,221,248],{"title":189,"items":190},"Erste Schritte",[191,196,201,206,211,216],{"text":192,"config":193},"Installieren",{"href":194,"dataGaName":195,"dataGaLocation":25},"/de-de/install/","install",{"text":197,"config":198},"Kurzanleitungen",{"href":199,"dataGaName":200,"dataGaLocation":25},"/de-de/get-started/","quick setup checklists",{"text":202,"config":203},"Lernen",{"href":204,"dataGaLocation":25,"dataGaName":205},"https://university.gitlab.com/","learn",{"text":207,"config":208},"Produktdokumentation",{"href":209,"dataGaName":210,"dataGaLocation":25},"https://docs.gitlab.com/","product documentation",{"text":212,"config":213},"Best-Practice-Videos",{"href":214,"dataGaName":215,"dataGaLocation":25},"/de-de/getting-started-videos/","best practice videos",{"text":217,"config":218},"Integrationen",{"href":219,"dataGaName":220,"dataGaLocation":25},"/de-de/integrations/","integrations",{"title":222,"items":223},"Entdecken",[224,229,234,239,243],{"text":225,"config":226},"Kundenerfolge",{"href":227,"dataGaName":228,"dataGaLocation":25},"/de-de/customers/","customer success stories",{"text":230,"config":231},"Blog",{"href":232,"dataGaName":233,"dataGaLocation":25},"/de-de/blog/","blog",{"text":235,"config":236},"Demo-Hub",{"href":237,"dataGaName":238,"dataGaLocation":25},"/de-de/demo-hub/","demo hub",{"text":240,"config":241},"The Source",{"href":242,"dataGaName":233,"dataGaLocation":25},"/de-de/the-source/",{"text":244,"config":245},"Remote",{"href":246,"dataGaName":247,"dataGaLocation":25},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":249,"items":250},"Vernetzen",[251,256,261,266,271,276],{"text":252,"config":253},"GitLab-Services",{"href":254,"dataGaName":255,"dataGaLocation":25},"/de-de/services/","services",{"text":257,"config":258},"Beitragen",{"href":259,"dataGaName":260,"dataGaLocation":25},"https://contributors.gitlab.com","contribute",{"text":262,"config":263},"Community",{"href":264,"dataGaName":265,"dataGaLocation":25},"/community/","community",{"text":267,"config":268},"Forum",{"href":269,"dataGaName":270,"dataGaLocation":25},"https://forum.gitlab.com/","forum",{"text":272,"config":273},"Veranstaltungen",{"href":274,"dataGaName":275,"dataGaLocation":25},"/events/","events",{"text":277,"config":278},"Partner",{"href":279,"dataGaName":280,"dataGaLocation":25},"/de-de/partners/","partners",{"config":282,"title":285,"text":286,"link":287},{"background":283,"textColor":284},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":288,"config":289},"Aktuelle Nachrichten",{"href":290,"dataGaName":291,"dataGaLocation":25},"/de-de/whats-new/","whats new",{"text":293,"config":294,"menu":296},"Unternehmen",{"dataNavLevelOne":295},"company",{"type":76,"columns":297},[298],{"items":299},[300,305,311,313,318,323,328,333,338,343],{"text":301,"config":302},"Über",{"href":303,"dataGaName":304,"dataGaLocation":25},"/de-de/company/","about",{"text":306,"config":307,"footerGa":310},"Karriere",{"href":308,"dataGaName":309,"dataGaLocation":25},"/jobs/","jobs",{"dataGaName":309},{"text":272,"config":312},{"href":274,"dataGaName":275,"dataGaLocation":25},{"text":314,"config":315},"Geschäftsführung",{"href":316,"dataGaName":317,"dataGaLocation":25},"/company/team/e-group/","leadership",{"text":319,"config":320},"Handbuch",{"href":321,"dataGaName":322,"dataGaLocation":25},"https://handbook.gitlab.com/","handbook",{"text":324,"config":325},"Investor Relations",{"href":326,"dataGaName":327,"dataGaLocation":25},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":329,"config":330},"Trust Center",{"href":331,"dataGaName":332,"dataGaLocation":25},"/de-de/security/","trust center",{"text":334,"config":335},"AI Transparency Center",{"href":336,"dataGaName":337,"dataGaLocation":25},"/de-de/ai-transparency-center/","ai transparency center",{"text":339,"config":340},"Newsletter",{"href":341,"dataGaName":342,"dataGaLocation":25},"/company/contact/#contact-forms","newsletter",{"text":344,"config":345},"Presse",{"href":346,"dataGaName":347,"dataGaLocation":25},"/press/","press",{"text":349,"config":350,"menu":351},"Kontakt",{"dataNavLevelOne":295},{"type":76,"columns":352},[353],{"items":354},[355,360,365],{"text":356,"config":357},"Vertrieb kontaktieren",{"href":358,"dataGaName":359,"dataGaLocation":25},"/de-de/sales/","talk to sales",{"text":361,"config":362},"Support-Portal",{"href":363,"dataGaName":364,"dataGaLocation":25},"https://support.gitlab.com/hc/en-us","support portal",{"text":366,"config":367},"Kundenportal",{"href":368,"dataGaName":369,"dataGaLocation":25},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":371,"login":372,"suggestions":379},"Schließen",{"text":373,"link":374},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":375,"config":376},"gitlab.com",{"href":39,"dataGaName":377,"dataGaLocation":378},"search login","search",{"text":380,"default":381},"Vorschläge",[382,384,389,391,396,401],{"text":56,"config":383},{"href":61,"dataGaName":56,"dataGaLocation":378},{"text":385,"config":386},"Codevorschläge (KI)",{"href":387,"dataGaName":388,"dataGaLocation":378},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":92,"config":390},{"href":94,"dataGaName":92,"dataGaLocation":378},{"text":392,"config":393},"GitLab auf AWS",{"href":394,"dataGaName":395,"dataGaLocation":378},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":397,"config":398},"GitLab auf Google Cloud",{"href":399,"dataGaName":400,"dataGaLocation":378},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":64,"config":402},{"href":69,"dataGaName":403,"dataGaLocation":378},"Why GitLab?",{"freeTrial":405,"mobileIcon":410,"desktopIcon":415,"secondaryButton":418},{"text":406,"config":407},"Kostenlos testen",{"href":408,"dataGaName":30,"dataGaLocation":409},"https://gitlab.com/-/trials/new/","nav",{"altText":411,"config":412},"GitLab-Symbol",{"src":413,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":411,"config":416},{"src":417,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":189,"config":419},{"href":420,"dataGaName":421,"dataGaLocation":409},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":423,"mobileIcon":427,"desktopIcon":429},{"text":424,"config":425},"Mehr über GitLab Duo erfahren",{"href":61,"dataGaName":426,"dataGaLocation":409},"gitlab duo",{"altText":411,"config":428},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":430},{"src":417,"dataGaName":414,"dataGaLocation":409},{"button":432,"mobileIcon":437,"desktopIcon":439},{"text":433,"config":434},"/Option",{"href":435,"dataGaName":436,"dataGaLocation":409},"#contact","switch",{"altText":411,"config":438},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":440},{"src":441,"dataGaName":414,"dataGaLocation":409},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":443,"mobileIcon":448,"desktopIcon":450},{"text":444,"config":445},"Zurück zur Preisübersicht",{"href":176,"dataGaName":446,"dataGaLocation":409,"icon":447},"back to pricing","GoBack",{"altText":411,"config":449},{"src":413,"dataGaName":414,"dataGaLocation":409},{"altText":411,"config":451},{"src":417,"dataGaName":414,"dataGaLocation":409},{"title":453,"button":454,"config":458},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":67,"config":455},{"href":456,"dataGaName":457,"dataGaLocation":25},"/de-de/gitlab-orbit/","orbit",{"layout":459,"disabled":10},"release",{"data":461},{"text":462,"source":463,"edit":469,"contribute":474,"config":479,"items":484,"minimal":690},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":464,"config":465},"Quelltext der Seite anzeigen",{"href":466,"dataGaName":467,"dataGaLocation":468},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":470,"config":471},"Diese Seite bearbeiten",{"href":472,"dataGaName":473,"dataGaLocation":468},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":475,"config":476},"Beteilige dich",{"href":477,"dataGaName":478,"dataGaLocation":468},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":480,"facebook":481,"youtube":482,"linkedin":483},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[485,530,583,625,657],{"title":174,"links":486,"subMenu":501},[487,491,496],{"text":488,"config":489},"Tarife anzeigen",{"href":176,"dataGaName":490,"dataGaLocation":468},"view plans",{"text":492,"config":493},"Vorteile von Premium",{"href":494,"dataGaName":495,"dataGaLocation":468},"/de-de/pricing/premium/","why premium",{"text":497,"config":498},"Vorteile von Ultimate",{"href":499,"dataGaName":500,"dataGaLocation":468},"/de-de/pricing/ultimate/","why ultimate",[502],{"title":349,"links":503},[504,506,508,510,515,520,525],{"text":356,"config":505},{"href":358,"dataGaName":35,"dataGaLocation":468},{"text":361,"config":507},{"href":363,"dataGaName":364,"dataGaLocation":468},{"text":366,"config":509},{"href":368,"dataGaName":369,"dataGaLocation":468},{"text":511,"config":512},"Status",{"href":513,"dataGaName":514,"dataGaLocation":468},"https://status.gitlab.com/","status",{"text":516,"config":517},"Nutzungsbedingungen",{"href":518,"dataGaName":519,"dataGaLocation":468},"/terms/","terms of use",{"text":521,"config":522},"Datenschutzerklärung",{"href":523,"dataGaName":524,"dataGaLocation":468},"/de-de/privacy/","privacy statement",{"text":526,"config":527},"Cookie-Einstellungen",{"dataGaName":528,"dataGaLocation":468,"id":529,"isOneTrustButton":14},"cookie preferences","ot-sdk-btn",{"title":72,"links":531,"subMenu":540},[532,536],{"text":533,"config":534},"DevSecOps-Plattform",{"href":54,"dataGaName":535,"dataGaLocation":468},"devsecops platform",{"text":537,"config":538},"KI-unterstützte Entwicklung",{"href":61,"dataGaName":539,"dataGaLocation":468},"ai-assisted development",[541],{"title":542,"links":543},"Themen",[544,548,553,558,563,568,573,578],{"text":92,"config":545},{"href":546,"dataGaName":547,"dataGaLocation":468},"/de-de/topics/ci-cd/","cicd",{"text":549,"config":550},"GitOps",{"href":551,"dataGaName":552,"dataGaLocation":468},"/de-de/topics/gitops/","gitops",{"text":554,"config":555},"DevOps",{"href":556,"dataGaName":557,"dataGaLocation":468},"/de-de/topics/devops/","devops",{"text":559,"config":560},"Versionskontrolle",{"href":561,"dataGaName":562,"dataGaLocation":468},"/de-de/topics/version-control/","version control",{"text":564,"config":565},"DevSecOps",{"href":566,"dataGaName":567,"dataGaLocation":468},"/de-de/topics/devsecops/","devsecops",{"text":569,"config":570},"Cloud-nativ",{"href":571,"dataGaName":572,"dataGaLocation":468},"/de-de/topics/cloud-native/","cloud native",{"text":574,"config":575},"KI für das Programmieren",{"href":576,"dataGaName":577,"dataGaLocation":468},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":579,"config":580},"Agentische KI",{"href":581,"dataGaName":582,"dataGaLocation":468},"/de-de/topics/agentic-ai/","agentic ai",{"title":584,"links":585},"Lösungen",[586,589,591,596,600,603,606,609,611,613,615,620],{"text":117,"config":587},{"href":112,"dataGaName":588,"dataGaLocation":468},"Application Security Testing",{"text":104,"config":590},{"href":88,"dataGaName":89,"dataGaLocation":468},{"text":592,"config":593},"Agile Entwicklung",{"href":594,"dataGaName":595,"dataGaLocation":468},"/de-de/solutions/agile-delivery/","agile delivery",{"text":597,"config":598},"SCM",{"href":101,"dataGaName":599,"dataGaLocation":468},"source code management",{"text":92,"config":601},{"href":94,"dataGaName":602,"dataGaLocation":468},"continuous integration & delivery",{"text":143,"config":604},{"href":145,"dataGaName":605,"dataGaLocation":468},"value stream management",{"text":549,"config":607},{"href":608,"dataGaName":552,"dataGaLocation":468},"/de-de/solutions/gitops/",{"text":156,"config":610},{"href":159,"dataGaName":160,"dataGaLocation":468},{"text":162,"config":612},{"href":165,"dataGaName":166,"dataGaLocation":468},{"text":168,"config":614},{"href":171,"dataGaName":172,"dataGaLocation":468},{"text":616,"config":617},"Bildungswesen",{"href":618,"dataGaName":619,"dataGaLocation":468},"/de-de/solutions/education/","education",{"text":621,"config":622},"Finanzdienstleistungen",{"href":623,"dataGaName":624,"dataGaLocation":468},"/de-de/solutions/finance/","financial services",{"title":179,"links":626},[627,629,631,633,636,638,641,643,645,647,649,651,653,655],{"text":192,"config":628},{"href":194,"dataGaName":195,"dataGaLocation":468},{"text":197,"config":630},{"href":199,"dataGaName":200,"dataGaLocation":468},{"text":202,"config":632},{"href":204,"dataGaName":205,"dataGaLocation":468},{"text":207,"config":634},{"href":209,"dataGaName":635,"dataGaLocation":468},"docs",{"text":230,"config":637},{"href":232,"dataGaName":233,"dataGaLocation":468},{"text":639,"config":640},"Neuerungen",{"href":290,"dataGaName":291,"dataGaLocation":468},{"text":225,"config":642},{"href":227,"dataGaName":228,"dataGaLocation":468},{"text":244,"config":644},{"href":246,"dataGaName":247,"dataGaLocation":468},{"text":252,"config":646},{"href":254,"dataGaName":255,"dataGaLocation":468},{"text":257,"config":648},{"href":259,"dataGaName":260,"dataGaLocation":468},{"text":262,"config":650},{"href":264,"dataGaName":265,"dataGaLocation":468},{"text":267,"config":652},{"href":269,"dataGaName":270,"dataGaLocation":468},{"text":272,"config":654},{"href":274,"dataGaName":275,"dataGaLocation":468},{"text":277,"config":656},{"href":279,"dataGaName":280,"dataGaLocation":468},{"title":293,"links":658},[659,661,663,665,667,669,674,679,681,683,685],{"text":301,"config":660},{"href":303,"dataGaName":295,"dataGaLocation":468},{"text":306,"config":662},{"href":308,"dataGaName":309,"dataGaLocation":468},{"text":314,"config":664},{"href":316,"dataGaName":317,"dataGaLocation":468},{"text":319,"config":666},{"href":321,"dataGaName":322,"dataGaLocation":468},{"text":324,"config":668},{"href":326,"dataGaName":327,"dataGaLocation":468},{"text":670,"config":671},"Nachhaltigkeit",{"href":672,"dataGaName":673,"dataGaLocation":468},"/sustainability/","Sustainability",{"text":675,"config":676},"Vielfalt, Inklusion und Zugehörigkeit",{"href":677,"dataGaName":678,"dataGaLocation":468},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":329,"config":680},{"href":331,"dataGaName":332,"dataGaLocation":468},{"text":339,"config":682},{"href":341,"dataGaName":342,"dataGaLocation":468},{"text":344,"config":684},{"href":346,"dataGaName":347,"dataGaLocation":468},{"text":686,"config":687},"Transparenzerklärung zu moderner Sklaverei",{"href":688,"dataGaName":689,"dataGaLocation":468},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":691},[692,695,698],{"text":693,"config":694},"Terms",{"href":518,"dataGaName":519,"dataGaLocation":468},{"text":696,"config":697},"Cookies",{"dataGaName":528,"dataGaLocation":468,"id":529,"isOneTrustButton":14},{"text":699,"config":700},"Datenschutz",{"href":523,"dataGaName":524,"dataGaLocation":468},24,{"id":703,"title":704,"authors":705,"body":707,"category":9,"date":1474,"description":1475,"extension":1476,"externalUrl":6,"faq":6,"featured":10,"heroImage":1477,"meta":1478,"navigation":14,"path":1479,"seo":1480,"slug":1482,"stem":1483,"tags":1484,"template":1486,"updatedDate":6,"__hash__":1487},"blogPosts/de-de/blog/whats-new-in-git-2-55-0.md","Was ist neu in Git 2.55.0?",[706],"Toon Claes",{"type":708,"value":709,"toc":1462},"minimark",[710,721,724,775,781,798,807,873,879,902,905,924,927,952,967,992,1017,1022,1037,1040,1061,1064,1072,1079,1097,1104,1126,1131,1154,1162,1165,1176,1194,1197,1203,1216,1231,1234,1243,1250,1257,1260,1268,1311,1329,1332,1354,1379,1382,1390,1408,1415,1424,1440,1444,1458],[711,712,713,714,720],"p",{},"Das Git-Projekt hat kürzlich ",[715,716,719],"a",{"href":717,"rel":718},"https://lore.kernel.org/git/xmqqv7b1w9vr.fsf@gitster.g/T/#u",[],"Git 2.55.0","\nveröffentlicht. Werfen wir einen Blick auf einige bemerkenswerte Highlights\ndieses Releases, das auch Beiträge des Git-Teams bei GitLab enthält.",[711,722,723],{},"Inhalt:",[725,726,727,738,744,753,763,769],"ul",{},[728,729,730],"li",{},[715,731,733,734],{"href":732},"#git-history1-lernt-fixup","git-history(1) lernt ",[735,736,737],"code",{},"fixup",[728,739,740],{},[715,741,743],{"href":742},"#fsmonitor-daemon-f%C3%BCr-linux","fsmonitor-Daemon für Linux",[728,745,746],{},[715,747,749,752],{"href":748},"#git-push-zu-einer-remote-gruppe",[735,750,751],{},"git push"," zu einer Remote-Gruppe",[728,754,755],{},[715,756,758,759,762],{"href":757},"#lane-breite-von-git-log---graph-begrenzen","Lane-Breite von ",[735,760,761],{},"git log --graph"," begrenzen",[728,764,765],{},[715,766,768],{"href":767},"#rust-entwicklung-im-git-quellcode","Rust-Entwicklung im Git-Quellcode",[728,770,771],{},[715,772,774],{"href":773},"#schnelleres-git-grep1-und-git-cherry1-in-partial-clones","Schnelleres git-grep(1) und git-cherry(1) in Partial Clones",[776,777,733,779],"h2",{"id":778},"git-history1-lernt-fixup",[735,780,737],{},[711,782,783,784,788,789,794,795,797],{},"In ",[715,785,787],{"href":786},"/whats-new-in-git-2-54-0#easier-editing-of-your-commit-history","unseren Highlights zu Git 2.54.0","\nhaben wir die Einführung von ",[715,790,793],{"href":791,"rel":792},"https://git-scm.com/docs/git-history",[],"git-history(1)","\nbehandelt. In 2.55.0 wurde ein neuer Subbefehl hinzugefügt: ",[735,796,737],{},".",[711,799,800,801,806],{},"Angenommen, einige Änderungen wurden vorgenommen und sollen in einen\nbestehenden Commit eingearbeitet werden. Der gebräuchlichste Ansatz dafür ist\ndas Erstellen eines Fixup-Commits und dessen automatisches Squashen mit\n",[715,802,805],{"href":803,"rel":804},"https://git-scm.com/docs/git-rebase",[],"git-rebase(1)",":",[808,809,814],"pre",{"className":810,"code":811,"language":812,"meta":813,"style":813},"language-shell shiki shiki-themes github-light","git commit --fixup=\u003Ccommit-id>\ngit rebase -i --autosquash \u003Ccommit-id>^\n","shell","",[735,815,816,843],{"__ignoreMap":813},[817,818,821,825,829,833,837,840],"span",{"class":819,"line":820},"line",1,[817,822,824],{"class":823},"s7eDp","git",[817,826,828],{"class":827},"sYBdl"," commit",[817,830,832],{"class":831},"sYu0t"," --fixup=",[817,834,836],{"class":835},"sD7c4","\u003C",[817,838,839],{"class":831},"commit-id",[817,841,842],{"class":835},">\n",[817,844,846,848,851,854,857,860,863,867,870],{"class":819,"line":845},2,[817,847,824],{"class":823},[817,849,850],{"class":827}," rebase",[817,852,853],{"class":831}," -i",[817,855,856],{"class":831}," --autosquash",[817,858,859],{"class":835}," \u003C",[817,861,862],{"class":827},"commit-i",[817,864,866],{"class":865},"sgsFI","d",[817,868,869],{"class":835},">",[817,871,872],{"class":827},"^\n",[711,874,875,876,878],{},"Dieses Vorgehen in zwei Schritten ist umständlich, insbesondere weil ein\ninteraktives Rebase erforderlich ist. Stattdessen lässt sich der\ngit-history(1)-Befehl ",[735,877,737],{}," verwenden:",[808,880,882],{"className":810,"code":881,"language":812,"meta":813,"style":813},"git history fixup \u003Ccommit-id>\n",[735,883,884],{"__ignoreMap":813},[817,885,886,888,891,894,896,898,900],{"class":819,"line":820},[817,887,824],{"class":823},[817,889,890],{"class":827}," history",[817,892,893],{"class":827}," fixup",[817,895,859],{"class":835},[817,897,862],{"class":827},[817,899,866],{"class":865},[817,901,842],{"class":835},[711,903,904],{},"Dieser Befehl nimmt die gestagten Änderungen und arbeitet sie in den\nangegebenen Commit ein. Als zusätzlicher Vorteil werden bei der Verwendung\nvon git-history(1) alle anderen lokalen Branches, die den korrigierten Commit\nenthalten, ebenfalls aktualisiert. Bei der Arbeit mit gestapelten Branches wird\ndurch das Korrigieren eines Commits im Stack automatisch ein Rebase aller\nzugehörigen Branches ausgeführt.",[711,906,907,908,913,914,919,797],{},"Dieses ",[715,909,912],{"href":910,"rel":911},"https://gitlab.com/git-scm/git/-/commit/ca7d7d642406e608214ee4529a75a6ad2310de35",[],"Feature","\nwurde von ",[715,915,918],{"href":916,"rel":917},"https://gitlab.com/pks-gitlab",[],"Patrick Steinhardt",[715,920,923],{"href":921,"rel":922},"https://lore.kernel.org/git/20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im/",[],"implementiert",[776,925,743],{"id":926},"fsmonitor-daemon-für-linux",[711,928,929,930,935,936,939,940,945,946,951],{},"Bei der Arbeit mit großen Monorepos kann\n",[715,931,934],{"href":932,"rel":933},"https://git-scm.com/docs/git-status",[],"git-status(1)"," langsam sein, da Git den\ngesamten Working Tree traversieren muss, um geänderte Dateien zu ermitteln. Um\ndiesen Prozess zu beschleunigen, wurde im Januar 2018 die Einstellung\n",[735,937,938],{},"core.fsmonitor"," in Git 2.16\n",[715,941,944],{"href":942,"rel":943},"https://gitlab.com/git-scm/git/-/commit/e05336bddacb90cf243aacc0f7b7f34f900453d7",[],"hinzugefügt",".\nDamals musste ein eigenes Werkzeug wie ",[715,947,950],{"href":948,"rel":949},"https://facebook.github.io/watchman/",[],"Watchman","\nbereitgestellt werden. Bei entsprechender Konfiguration läuft dieses Werkzeug\nim Hintergrund und überwacht Änderungen am Dateisystem. Es informiert Git, dass\neine Datei berührt wurde, woraufhin Git prüft, ob die Datei tatsächlich\ngeändert wurde, und den gecachten Status aktualisiert. Wenn git-status(1)\naufgerufen wird, kann es den gecachten Status direkt zurückgeben.",[711,953,954,955,957,962,963,966],{},"Im April 2022 wurde die Einstellung ",[735,956,938],{},[715,958,961],{"href":959,"rel":960},"https://gitlab.com/git-scm/git/-/commit/1e0ea5c4316d2241dd76ef430a2779db9a097dfb",[],"geändert",",\num einen Boolean-Wert zu akzeptieren. Bei ",[735,964,965],{},"true"," wird ein in Git integrierter\nDaemon verwendet – kein Drittanbieter-Werkzeug mehr. Dieser Filesystem-Monitor\nwar jedoch nur für Windows und macOS implementiert, GNU/Linux-Unterstützung\nfehlte bislang.",[711,968,969,970,975,976,981,982,987,988,991],{},"Das ändert sich mit Git 2.55, das auch Linux-Unterstützung hinzufügt. Dafür\nwird ",[715,971,974],{"href":972,"rel":973},"https://man7.org/linux/man-pages/man7/inotify.7.html",[],"inotify(7)","\nverwendet. inotify(7) wurde gegenüber\n",[715,977,980],{"href":978,"rel":979},"https://www.man7.org/linux/man-pages/man7/fanotify.7.html",[],"fanotify(7)","\nbevorzugt, da fanotify(7) erhöhte Berechtigungen erfordert. Das bringt jedoch\neinen kleinen ",[715,983,986],{"href":984,"rel":985},"https://git-scm.com/docs/git-fsmonitor--daemon#_linux_caveats",[],"Vorbehalt","\nmit sich: Der fsmonitor muss auf jedes einzelne Verzeichnis im Repository einen\nWatcher setzen. In einem großen Repository kann das Limit der inotify-Watches\n(",[735,989,990],{},"fs.inotify.max_user_watches",") erreicht werden, das möglicherweise erhöht\nwerden muss.",[711,993,994,995,1000,1001,1006,1007,1012,797],{},"Diese ",[715,996,999],{"href":997,"rel":998},"https://gitlab.com/git-scm/git/-/commit/4d11b9c21863c1a860fdf61a9066f0d94c0d692a",[],"Änderungen","\nwurden von ",[715,1002,1005],{"href":1003,"rel":1004},"https://paultarjan.com/",[],"Paul Tarjan"," auf Basis der Arbeit von\nEric DeCosta und ",[715,1008,1011],{"href":1009,"rel":1010},"https://github.com/maryis",[],"Marziyeh Esipreh",[715,1013,1016],{"href":1014,"rel":1015},"https://lore.kernel.org/git/pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com/",[],"eingereicht",[776,1018,1020,752],{"id":1019},"git-push-zu-einer-remote-gruppe",[735,1021,751],{},[711,1023,1024,1025,1030,1031,1036],{},"Vor einiger Zeit hat ",[715,1026,1029],{"href":1027,"rel":1028},"https://git-scm.com/docs/git-fetch",[],"git-fetch(1)"," gelernt,\nvon einer ",[715,1032,1035],{"href":1033,"rel":1034},"https://git-scm.com/docs/git-fetch#Documentation/git-fetch.txt-group",[],"Gruppe","\nvon Remotes zu fetchen.",[711,1038,1039],{},"Mit dem folgenden Befehl wird eine Remote-Gruppe konfiguriert:",[808,1041,1043],{"className":810,"code":1042,"language":812,"meta":813,"style":813},"git config set remotes.forks \"origin upstream\"\n",[735,1044,1045],{"__ignoreMap":813},[817,1046,1047,1049,1052,1055,1058],{"class":819,"line":820},[817,1048,824],{"class":823},[817,1050,1051],{"class":827}," config",[817,1053,1054],{"class":827}," set",[817,1056,1057],{"class":827}," remotes.forks",[817,1059,1060],{"class":827}," \"origin upstream\"\n",[711,1062,1063],{},"Damit lässt sich git-fetch(1) aus dieser „forks\"-Gruppe aufrufen, und alle\nRemotes in der Liste werden abgerufen. Das ist nützlich, um Updates von mehreren\nRemotes in einem Schritt zu holen.",[711,1065,1066,1071],{},[715,1067,1070],{"href":1068,"rel":1069},"https://git-scm.com/docs/git-push",[],"git-push(1)"," konnte Remote-Gruppen bislang\njedoch nicht verwenden.",[711,1073,1074,1075,1078],{},"In Git 2.55 wird diese Lücke geschlossen: git-push(1) akzeptiert jetzt\nebenfalls Remote-Gruppen. Um beispielsweise den ",[735,1076,1077],{},"main","-Branch in die oben\ngenannte Gruppe zu pushen:",[808,1080,1082],{"className":810,"code":1081,"language":812,"meta":813,"style":813},"git push forks main\n",[735,1083,1084],{"__ignoreMap":813},[817,1085,1086,1088,1091,1094],{"class":819,"line":820},[817,1087,824],{"class":823},[817,1089,1090],{"class":827}," push",[817,1092,1093],{"class":827}," forks",[817,1095,1096],{"class":827}," main\n",[711,1098,1099,1100,1103],{},"Wie bei git-fetch(1) pusht dieser Befehl die angegebenen Refs zu jedem Remote\nin der Gruppe. Jeder Remote wird unabhängig gepusht und berücksichtigt seine\neigene ",[735,1101,1102],{},"remote.\u003Cname>.push","-Zuordnung und Mirror-Einstellungen.",[711,1105,907,1106,913,1110,1115,1119,1120,1125],{},[715,1107,912],{"href":1108,"rel":1109},"https://gitlab.com/git-scm/git/-/commit/2c677d20b684cdcae669fe508d4cd60fea8cb320",[],[715,1111,1114],{"href":1112,"rel":1113},"https://github.com/Unique-Usman",[],"Usman Akinyemi",[715,1116,1016],{"href":1117,"rel":1118},"https://lore.kernel.org/git/20260503153402.1333220-1-usmanakinyemi202@gmail.com/",[],"\nund von ",[715,1121,1124],{"href":1122,"rel":1123},"https://lore.kernel.org/git/xmqqiki0ivgy.fsf@gitster.g/",[],"Junio C Hamano","\nangeregt.",[776,1127,758,1129,762],{"id":1128},"lane-breite-von-git-log-graph-begrenzen",[735,1130,761],{},[711,1132,1133,1134,1141,1142,1147,1148,1153],{},"Die Option ",[715,1135,1138],{"href":1136,"rel":1137},"https://git-scm.com/docs/git-log#Documentation/git-log.txt---graph",[],[735,1139,1140],{},"--graph","\nvon ",[715,1143,1146],{"href":1144,"rel":1145},"https://git-scm.com/docs/git-log",[],"git-log(1)"," zeichnet eine\nASCII-Darstellung der Commit-Historie. In einem Repository mit vielen aktiven\nBeitragenden kann dieser Graph sehr breit werden. Im\n",[715,1149,1152],{"href":1150,"rel":1151},"https://gitlab.com/git-scm/git/",[],"git.git","-Repository zum Beispiel wächst der\nGraph nach nur 30 Commits auf neun Lanes Breite:",[808,1155,1160],{"className":1156,"code":1158,"language":1159,"meta":813},[1157],"language-text","* 26d8d94e94 A few more topics before -rc2\n*   02bb39c5cb Merge branch 'js/objects-larger-than-4gb-on-windows-more'\n|\\\n| * c6a4629e32 odb: use size_t for object_info.sizep and the size APIs\n| * 7a3a78cc76 packfile,delta: drop the `cast_size_t_to_ulong()` wrappers\n| * 188bac14f7 pack-objects: use size_t for in-core object sizes\n| * 2d83cc3f84 packfile: widen unpack_entry()'s size out-parameter to size_t\n| * 1d43315b31 pack-objects(check_pack_inflate()): use size_t instead of unsigned long\n| * 33afe87338 patch-delta: use size_t for sizes\n| * 8ea69373a4 compat/msvc: use _chsize_s for ftruncate\n* |   8cf57cbec4 Merge branch 'kw/gitattributes-typofix'\n|\\ \\\n| * | 0bf506efd4 gitattributes: fix eol attribute for Perl scripts\n* | |   8d96f09e92 Merge branch 'js/objects-larger-than-4gb-on-windows'\n|\\ \\ \\\n| * | | ab3810eb6f zlib: properly clamp to uLong\n* | | | 95e20213fa Hopefully final batch before -rc2\n* | | |   8632b5c49d Merge branch 'en/commit-graph-timestamp-fix'\n|\\ \\ \\ \\\n| * | | | fbcc5408fc commit-graph: use timestamp_t for max parent generation accumulator\n* | | | |   619931f561 Merge branch 'dl/posix-unused-warning-clang'\n|\\ \\ \\ \\ \\\n| * | | | | cf48887610 compat/posix.h: simplify GIT_GNUC_PREREQ() comparison\n| * | | | | ffd45926dc compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED\n| * | | | | 689dc92e50 compat/posix.h: enable UNUSED warning messages for Clang\n* | | | | |   621962aa7a Merge branch 'td/ls-files-pathspec-prefilter'\n|\\ \\ \\ \\ \\ \\\n| * | | | | | 3f5203eeb4 ls-files: filter pathspec before lstat\n| | |_|_|_|/\n| |/| | | |\n* | | | | |   0c706d5092 Merge branch 'ta/doc-config-adoc-fixes'\n|\\ \\ \\ \\ \\ \\\n| * | | | | | 4fa2c6e045 doc: git-config: escape erroneous highlight markup\n| * | | | | | 042221cccb doc: config/sideband: fix description list delimiter\n| * | | | | | 3eb61fda62 doc: config: terminate runaway lists\n* | | | | | |   49cb068fb2 Merge branch 'jc/t1400-fifo-cleanup'\n|\\ \\ \\ \\ \\ \\ \\\n| * | | | | | | e8f12e0e95 t1400: have fifo test clean after itself\n* | | | | | | |   b4970f8448 Merge branch 'td/describe-tag-iteration'\n|\\ \\ \\ \\ \\ \\ \\ \\\n| * | | | | | | | 55088ac8a4 describe: limit default ref iteration to tags\n","text",[735,1161,1158],{"__ignoreMap":813},[711,1163,1164],{},"Das liegt daran, dass jede Lane bis zu dem Commit weiterläuft, von dem der\nBranch abgezweigt wurde. Das schiebt die Commit-Nachrichten nach rechts und\nerschwert das Lesen – besonders wenn die Terminalbreite erreicht wird, wird\ndie Ausgabe unbrauchbar.",[711,1166,1167,1168,1171,1172,1175],{},"Git 2.55 fügt eine neue Option ",[735,1169,1170],{},"--graph-lane-limit=\u003Cn>"," hinzu, um die Anzahl\nder gezeichneten Lanes zu begrenzen. Lanes jenseits des Limits werden durch\nein ",[735,1173,1174],{},"~","-Kürzungszeichen ersetzt, sodass ersichtlich bleibt, dass der Graph\nabgeschnitten wurde:",[808,1177,1179],{"className":810,"code":1178,"language":812,"meta":813,"style":813},"git log --graph --graph-lane-limit=5\n",[735,1180,1181],{"__ignoreMap":813},[817,1182,1183,1185,1188,1191],{"class":819,"line":820},[817,1184,824],{"class":823},[817,1186,1187],{"class":827}," log",[817,1189,1190],{"class":831}," --graph",[817,1192,1193],{"class":831}," --graph-lane-limit=5\n",[711,1195,1196],{},"Mit dieser Option für dieselben 30 Commits von oben ergibt sich:",[808,1198,1201],{"className":1199,"code":1200,"language":1159,"meta":813},[1157],"* 26d8d94e94 A few more topics before -rc2\n*   02bb39c5cb Merge branch 'js/objects-larger-than-4gb-on-windows-more'\n|\\\n| * c6a4629e32 odb: use size_t for object_info.sizep and the size APIs\n| * 7a3a78cc76 packfile,delta: drop the `cast_size_t_to_ulong()` wrappers\n| * 188bac14f7 pack-objects: use size_t for in-core object sizes\n| * 2d83cc3f84 packfile: widen unpack_entry()'s size out-parameter to size_t\n| * 1d43315b31 pack-objects(check_pack_inflate()): use size_t instead of unsigned long\n| * 33afe87338 patch-delta: use size_t for sizes\n| * 8ea69373a4 compat/msvc: use _chsize_s for ftruncate\n* |   8cf57cbec4 Merge branch 'kw/gitattributes-typofix'\n|\\ \\\n| * | 0bf506efd4 gitattributes: fix eol attribute for Perl scripts\n* | |   8d96f09e92 Merge branch 'js/objects-larger-than-4gb-on-windows'\n|\\ \\ \\\n| * | | ab3810eb6f zlib: properly clamp to uLong\n* | | | 95e20213fa Hopefully final batch before -rc2\n* | | |   8632b5c49d Merge branch 'en/commit-graph-timestamp-fix'\n|\\ \\ \\ \\\n| * | | | fbcc5408fc commit-graph: use timestamp_t for max parent generation accumulator\n* | | | |   619931f561 Merge branch 'dl/posix-unused-window-clang'\n|\\ \\ \\ \\ \\\n| * | | | ~ cf48887610 compat/posix.h: simplify GIT_GNUC_PREREQ() comparison\n| * | | | ~ ffd45926dc compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED\n| * | | | ~ 689dc92e50 compat/posix.h: enable UNUSED warning messages for Clang\n* | | | | ~ 621962aa7a Merge branch 'td/ls-files-pathspec-prefilter'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 3f5203eeb4 ls-files: filter pathspec before lstat\n| | |_|_|_~\n| |/| | | ~\n* | | | | ~ 0c706d5092 Merge branch 'ta/doc-config-adoc-fixes'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 4fa2c6e045 doc: git-config: escape erroneous highlight markup\n| * | | | ~ 042221cccb doc: config/sideband: fix description list delimiter\n| * | | | ~ 3eb61fda62 doc: config: terminate runaway lists\n* | | | | ~ 49cb068fb2 Merge branch 'jc/t1400-fifo-cleanup'\n|\\ \\ \\ \\ \\~\n| * | | | ~ e8f12e0e95 t1400: have fifo test clean after itself\n* | | | | ~ b4970f8448 Merge branch 'td/describe-tag-iteration'\n|\\ \\ \\ \\ \\~\n| * | | | ~ 55088ac8a4 describe: limit default ref iteration to tags\n",[735,1202,1200],{"__ignoreMap":813},[711,1204,1205,1206,1208,1209,1212,1213,797],{},"Die Option macht nur in Kombination mit ",[735,1207,1140],{}," Sinn. Der Standardwert ist\n",[735,1210,1211],{},"0"," (kein Limit), null und negative Werte werden gleich behandelt – analog zu\n",[735,1214,1215],{},"--max-parents",[711,1217,907,1218,913,1222,1227,797],{},[715,1219,912],{"href":1220,"rel":1221},"https://gitlab.com/git-scm/git/-/commit/7af2503365b4bc683c16e667b88c0796d6d9d2ee",[],[715,1223,1226],{"href":1224,"rel":1225},"https://pablosabater.dev/",[],"Pablo Sabater",[715,1228,1016],{"href":1229,"rel":1230},"https://lore.kernel.org/git/20260328001113.1275291-1-pabloosabaterr@gmail.com/",[],[776,1232,768],{"id":1233},"rust-entwicklung-im-git-quellcode",[711,1235,1236,1237,1242],{},"Im März 2025 wurde mit dem Release von Git 2.49 der erste\n",[715,1238,1241],{"href":1239,"rel":1240},"https://www.rust-lang.org/",[],"Rust","-Code in den Git-Quellcode aufgenommen.\nRust-Bindings ermöglichten Rust-Code den Aufruf von libgit. Keiner dieser\nRust-Code-Teile wurde jedoch von den Git-Binaries genutzt.",[711,1244,1245,1246,1249],{},"Im November 2025 wurde in Git 2.52 der erste Rust-Produktionscode in Git\neingeführt: eine Rust-Implementierung des ",[735,1247,1248],{},"varint","-Subsystems. Dieser Code\nwird optional kompiliert, wenn der Rust-Compiler verfügbar ist; andernfalls\nwird die C-Implementierung verwendet. Das war ein Testballon für Distributoren,\num ihre Toolchain auf ein künftiges Git-Release vorzubereiten, das Rust voraussetzt.",[711,1251,1252,1253,1256],{},"Anfang dieses Jahres, in Version 2.54, wurde weiterer Rust-Code mit der\nEinführung des ",[735,1254,1255],{},"ObjectID","-Typs hinzugefügt – als Teil der Bemühungen um\nInteroperabilität zwischen SHA-1 und SHA-256.",[711,1258,1259],{},"Bis zu diesem Release griffen beide Build-Systeme Make und Meson auf die\nC-Implementierung zurück, wenn kein Rust-Compiler gefunden wurde. Mit diesem\nv2.55-Release wird der Rust-Compiler vorausgesetzt, es sei denn, er wird im\nBuild-System explizit deaktiviert.",[711,1261,1262,1263,1267],{},"Hinweis: Das betrifft keine Nutzer von Git. Es betrifft nur diejenigen, die\nGit ",[1264,1265,1266],"em",{},"aus dem Quellcode kompilieren",". Wer Git kompiliert und Rust nicht verwenden\nmöchte, deaktiviert es mit einem dieser Befehle:",[808,1269,1271],{"className":810,"code":1270,"language":812,"meta":813,"style":813},"# Meson\nmeson configure -Drust=disabled\n\n# Makefile\nmake NO_RUST=YesPlease\n",[735,1272,1273,1279,1290,1296,1302],{"__ignoreMap":813},[817,1274,1275],{"class":819,"line":820},[817,1276,1278],{"class":1277},"sAwPA","# Meson\n",[817,1280,1281,1284,1287],{"class":819,"line":845},[817,1282,1283],{"class":823},"meson",[817,1285,1286],{"class":827}," configure",[817,1288,1289],{"class":831}," -Drust=disabled\n",[817,1291,1293],{"class":819,"line":1292},3,[817,1294,1295],{"emptyLinePlaceholder":14},"\n",[817,1297,1299],{"class":819,"line":1298},4,[817,1300,1301],{"class":1277},"# Makefile\n",[817,1303,1305,1308],{"class":819,"line":1304},5,[817,1306,1307],{"class":823},"make",[817,1309,1310],{"class":827}," NO_RUST=YesPlease\n",[711,1312,1313,1314,1319,1320,1319,1323,1328],{},"Die Integration von Rust in Git ist ein laufendes (und noch nicht\nabgeschlossenes) community-weites Effort über mehrere Releases hinweg. Es ist\nunmöglich, das einer einzelnen Person zuzuschreiben, aber zu den bedeutendsten\nBeitragenden gehören ",[715,1315,1318],{"href":1316,"rel":1317},"https://mastodon.social/@bk2204",[],"brian m. carlson",",\n",[715,1321,918],{"href":916,"rel":1322},[],[715,1324,1327],{"href":1325,"rel":1326},"https://github.com/ezekielnewren",[],"Ezekiel Newren"," und Calvin Wan.",[776,1330,774],{"id":1331},"schnelleres-git-grep1-und-git-cherry1-in-partial-clones",[711,1333,1334,1339,1340,1345,1346,1353],{},[715,1335,1338],{"href":1336,"rel":1337},"https://git-scm.com/docs/git-clone",[],"git-clone(1)"," verfügt über eine Funktion\nnamens ",[715,1341,1344],{"href":1342,"rel":1343},"https://git-scm.com/docs/partial-clone",[],"Partial Clone",". Sie ermöglicht\ndas Anwenden eines Filters auf das, was vom Server übertragen wird. In der\nPraxis geschieht das mit der\n",[715,1347,1350],{"href":1348,"rel":1349},"https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---filterfilter-spec",[],[735,1351,1352],{},"--filter","-Option:",[808,1355,1357],{"className":810,"code":1356,"language":812,"meta":813,"style":813},"git clone --filter=blob:none \u003Cremote>\n",[735,1358,1359],{"__ignoreMap":813},[817,1360,1361,1363,1366,1369,1371,1374,1377],{"class":819,"line":820},[817,1362,824],{"class":823},[817,1364,1365],{"class":827}," clone",[817,1367,1368],{"class":831}," --filter=blob:none",[817,1370,859],{"class":835},[817,1372,1373],{"class":827},"remot",[817,1375,1376],{"class":865},"e",[817,1378,842],{"class":835},[711,1380,1381],{},"Damit wird das Repository geklont, aber ohne Blobs (d. h. ohne den Inhalt der\nDateien im Tree). Das kann den Clone erheblich beschleunigen, hat aber den\nNachteil, dass Git Blobs später herunterladen muss, wenn andere Befehle den\nDateiinhalt lesen. Manche Befehle benötigen dabei sehr viele fehlende Blobs.",[711,1383,1384,1389],{},[715,1385,1388],{"href":1386,"rel":1387},"https://git-scm.com/docs/git-grep",[],"git-grep(1)"," ist einer dieser Befehle, da\ner den Inhalt von Dateien durchsucht. Angenommen, nach dem Wort „TODO\" in der\nHistorie 100 Commits zurück gesucht werden soll:",[808,1391,1393],{"className":810,"code":1392,"language":812,"meta":813,"style":813},"git grep TODO HEAD~100\n",[735,1394,1395],{"__ignoreMap":813},[817,1396,1397,1399,1402,1405],{"class":819,"line":820},[817,1398,824],{"class":823},[817,1400,1401],{"class":827}," grep",[817,1403,1404],{"class":827}," TODO",[817,1406,1407],{"class":827}," HEAD~100\n",[711,1409,1410,1411,1414],{},"Dieser Befehl löst den ",[735,1412,1413],{},"HEAD~100","-Commit und die zugehörigen Trees auf. Diese\nTrees können jedoch auf Blobs zeigen, die noch nicht heruntergeladen wurden.\nBisher wurde jeder Blob einzeln heruntergeladen. Das wurde in Git 2.55\nverbessert: Die Blob-Downloads werden jetzt in einem einzigen\nVerhandlungs-Round-Trip mit dem Server gebündelt.",[711,1416,1417,1418,1423],{},"Dieses Batching ist jetzt sowohl für git-grep(1) als auch für\n",[715,1419,1422],{"href":1420,"rel":1421},"https://git-scm.com/docs/git-cherry",[],"git-cherry(1)"," implementiert.",[711,1425,994,1426,913,1431,1436,797],{},[715,1427,1430],{"href":1428,"rel":1429},"https://gitlab.com/git-scm/git/-/commit/6d2ba7ead7ab074bfd88e194bb75d6b384c44d4e",[],"Änderung",[715,1432,1435],{"href":1433,"rel":1434},"https://github.com/newren",[],"Elijah Newren",[715,1437,1016],{"href":1438,"rel":1439},"https://lore.kernel.org/git/pull.2089.v3.git.1778775928.gitgitgadget@gmail.com/",[],[776,1441,1443],{"id":1442},"weiterlesen","Weiterlesen",[711,1445,1446,1447,1451,1452,1457],{},"Dieser Artikel hat nur einige der Beiträge von GitLab und der breiteren\nGit-Community für dieses Release hervorgehoben. Weitere Details sind in der\n",[715,1448,1450],{"href":717,"rel":1449},[],"offiziellen Release-Ankündigung","\ndes Git-Projekts zu finden. Außerdem lohnt ein Blick auf die\n",[715,1453,1456],{"href":1454,"rel":1455},"https://about.gitlab.com/de-de/blog/tags/git/",[],"früheren Git-Release-Blogbeiträge",",\ndie weitere Highlights der Beiträge von GitLab-Teammitgliedern zeigen.",[1459,1460,1461],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":813,"searchDepth":845,"depth":845,"links":1463},[1464,1466,1467,1469,1471,1472,1473],{"id":778,"depth":845,"text":1465},"git-history(1) lernt fixup",{"id":926,"depth":845,"text":743},{"id":1019,"depth":845,"text":1468},"git push zu einer Remote-Gruppe",{"id":1128,"depth":845,"text":1470},"Lane-Breite von git log --graph begrenzen",{"id":1233,"depth":845,"text":768},{"id":1331,"depth":845,"text":774},{"id":1442,"depth":845,"text":1443},"2026-06-29","Neue Funktionen in Git 2.55: git-history(1) fixup, fsmonitor-Daemon für Linux, Push zu Remote-Gruppen und mehr.","md","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782732487/ztwgrvlolpifo01vj8qc.png",{},"/de-de/blog/whats-new-in-git-2-55-0",{"config":1481,"title":704,"description":1475},{"noIndex":10},"whats-new-in-git-2-55-0","de-de/blog/whats-new-in-git-2-55-0",[1485,824,265],"open source","BlogPost","qdNE2zdETz6JBhCn_t8u1pJwlsW9d23XCnSOosewtCg",[1489,1496,1502,1509,1516,1522,1528,1536,1541],{"title":1490,"heroImage":1491,"category":9,"description":1492,"authors":1493,"slug":1495,"externalUrl":6},"GitLab AI Hackathon 2026: Hier sind die Gewinner und ihre Projekte","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","Fast 7.000 Entwickler(innen) haben über 600 KI-Agenten und Flows auf GitLab Duo Agent Platform gebaut. Erfahre, wer gewonnen hat und was sie entwickelt haben.",[1494],"Nick Veenhof","gitlab-ai-hackathon-2026-meet-the-winners",{"title":1497,"heroImage":1498,"category":9,"description":1499,"authors":1500,"slug":1501,"externalUrl":6},"Was ist neu in Git 2.54.0?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776711651/sj7xxyyuimlarswbyft5.png","Erfahre mehr über die Beiträge zu diesem Release, darunter neue Repository-Wartung, ein neuer Befehl zur Bearbeitung der Commit-Historie, ein Ersatz für git-sizer(1) und mehr.",[918],"whats-new-in-git-2-54-0",{"title":1503,"heroImage":1504,"category":9,"description":1505,"authors":1506,"slug":1508,"externalUrl":6},"Kubernetes: Container-Orchestrierung verstehen und einsetzen","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749660215/Blog/Hero%20Images/kubernetes-container-orchestration-solution.jpg","Kubernetes (K8s) für containerisierte Anwendungen: Dieser Artikel erklärt Architektur, Vorteile, Grenzen und den Einsatz mit GitLab.",[1507],"GitLab Team","kubernetes-the-container-orchestration-solution",{"title":1510,"heroImage":1511,"category":9,"description":1512,"authors":1513,"slug":1515,"externalUrl":6},"Was ist neu in Git 2.53.0?","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663087/Blog/Hero%20Images/git3-cover.png","Alles, was du über dieses Release wissen musst, darunter Fixes für geometrisches Repacking, Updates zu den Commit-Signature-Handling-Optionen von git-fast-import(1) und mehr.",[1514],"Justin Tobler","whats-new-in-git-2-53-0",{"title":1517,"heroImage":1511,"category":9,"description":1518,"authors":1519,"slug":1521,"externalUrl":6},"Was ist neu in Git 2.52.0?","Alles zum aktuellen Release, darunter der neue git-last-modified(1)-Befehl, Verbesserungen an History-Rewriting-Tools und eine neue Maintenance-Strategie.",[1520,706,918],"Christian Couder","whats-new-in-git-2-52-0",{"title":1523,"heroImage":1511,"category":9,"description":1524,"authors":1525,"slug":1527,"externalUrl":6},"Was ist neu in Git 2.51.0?","Erfahren Sie mehr über die neuesten Beiträge von GitLabs Git-Team und der Git-Community, einschließlich Performance-Optimierungen für git-push(1) und git-fetch(1), die besonders für deutsche Entwicklungsteams relevant sind.",[1526],"Karthik Nayak","what-s-new-in-git-2-51-0",{"title":1529,"heroImage":1530,"category":9,"description":1531,"authors":1532,"slug":1535,"externalUrl":6},"Von 17 % auf 100 %: Wie wir das Open-Source-Onboarding revolutionierten","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750099558/Blog/Hero%20Images/Blog/Hero%20Images/gitlabflatlogomap_gitlabflatlogomap.png_1750099558369.png","In nur einem Jahr steigerten wir die Erfolgsquote neuer Open-Source-Mitwirkender von 17 % auf 100 %. Hier sind die GitLab-Tools und -Prozesse, die den Unterschied machten.",[1533,1534],"Lee Tickett","Daniel Murphy","how-we-use-gitlab-to-grow-open-source-communities",{"title":1537,"heroImage":1511,"category":9,"description":1538,"authors":1539,"slug":1540,"externalUrl":6},"Was gibt es Neues in Git 2.50.0?","Beiträge des Git-Teams von GitLab und der Git-Community, inklusive des Befehls git-diff-pairs(1) und der Option git-rev-list(1) für gebündelte Referenz-Updates.",[1514],"what-s-new-in-git-2-50-0",{"title":1542,"heroImage":1543,"category":9,"description":1544,"authors":1545,"slug":1546,"externalUrl":6},"20 Jahre GitLab: Begib dich mit uns auf eine Reise","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750097380/Blog/Hero%20Images/Blog/Hero%20Images/git-20-years-opt2_TWNsNk8KH43b3jP0KLD0U_1750097380123.png","Begib dich mit uns auf die Spuren des ersten Commits, die einzigartigen Aspekte der frühen Releases und die Verwirrung, die ein Update des Standardverhaltens von git-push(1) ausgelöst hat.",[918],"journey-through-gits-20-year-history",1786803736685]