[{"data":1,"prerenderedAt":1239},["ShallowReactive",2],{"/fr-fr/blog/take-advantage-of-git-rebase":3,"navigation-fr-fr":454,"banner-fr-fr":889,"footer-fr-fr":897,"blog-post-authors-fr-fr-Christian Couder":1136,"blog-related-posts-fr-fr-take-advantage-of-git-rebase":1151,"blog-promotions-fr-fr":1176,"next-steps-fr-fr":1230},{"id":4,"title":5,"authors":6,"body":8,"category":431,"date":432,"description":433,"extension":434,"externalUrl":435,"faq":435,"featured":436,"heroImage":437,"meta":438,"navigation":439,"path":440,"seo":441,"slug":445,"stem":446,"tags":447,"template":451,"updatedDate":452,"__hash__":453},"blogPosts/fr-fr/blog/take-advantage-of-git-rebase.md","Améliorez votre workflow avec Git rebase",[7],"Christian Couder",{"type":9,"value":10,"toc":411},"minimark",[11,22,27,30,35,38,41,51,54,58,61,69,75,78,82,89,118,127,151,159,169,184,188,194,197,237,240,262,266,273,287,293,297,301,328,332,339,358,364,370,374,385,391,400,404,407],[12,13,14,15,21],"p",{},"Les merge requests permettent à l'équipe de développement logiciel de passer en revue les modifications du code avant de les intégrer au projet principal. De nos jours, cette tâche prend beaucoup de temps. Découvrez comment ",[16,17,20],"a",{"href":18,"rel":19},"https://git-scm.com/docs/git-rebase/fr",[],"Git rebase"," peut vous aider à accélérer ces cycles de revues de code. Commençons par certaines\nconsidérations relatives au workflow.",[23,24,26],"h2",{"id":25},"comment-rectifier-le-code-dune-merge-request","Comment rectifier le code d'une merge request ?",[12,28,29],{},"Un développeur qui a travaillé sur des modifications de code et a créé une merge request pour les intégrer au projet devra souvent procéder à des ajustements ou des corrections. Pourquoi ? Parce que certains tests peuvent échouer, des bogues peuvent être découverts, ou les relecteurs peuvent suggérer des améliorations et repérer des anomalies.",[31,32,34],"h3",{"id":33},"méthode-simple-mais-désordonnée-multiplier-les-validations","Méthode simple, mais désordonnée : multiplier les validations",[12,36,37],{},"Pour rectifier le code de la merge request, vous pouvez simplement apporter d'autres modifications par l'intermédiaire de nouvelles validations sur la branche utilisée pour créer la merge request, puis effectuer à nouveau un push de la branche afin de mettre à jour la merge request.",[12,39,40],{},"Cependant, lorsque plusieurs validations ont été ajoutées de cette manière, la merge request peut devenir un vrai défi :",[42,43,44,48],"ul",{},[45,46,47],"li",{},"Il est difficile d'effectuer une revue de code de toutes les modifications en les examinant toutes ensemble.",[45,49,50],{},"Il est difficile d'examiner les validations séparément, car elles peuvent contenir des modifications différentes sans rapport entre elles, voire de plusieurs versions d'un même code.",[12,52,53],{},"Les relecteurs préfèrent souvent examiner les modifications de code réparties sur plusieurs petites validations autonomes pouvant faire l'objet de revues de code individuelles.",[31,55,57],{"id":56},"méthode-de-professionnels-rebaser","Méthode de professionnels : rebaser !",[12,59,60],{},"Le meilleur moyen de préparer ou de rectifier le code d'une merge request consiste à toujours s'assurer que chaque validation contient de petites modifications, indépendantes et faciles à réviser.",[12,62,63,64,68],{},"Chaque validation de la branche peut nécessiter des ajustements, plutôt que d'ajouter de nouvelles validations. De prime abord plus complexe et fastidieuse, cette approche dispose d'une botte secrète : ",[65,66,67],"code",{},"git rebase"," !",[23,70,72,73],{"id":71},"rectifier-vos-validations-avec-git-rebase","Rectifier vos validations avec ",[65,74,67],{},[12,76,77],{},"Si votre objectif consiste à créer une merge request à partir d'une série de petites validations indépendantes, il est possible que votre branche nécessite un travail précis de rectification avant que ses validations ne soient suffisamment fiables. Une fois les validations prêtes, vous pouvez effectuer un push de la branche et mettre à jour ou créer une merge request avec cette branche.",[31,79,81],{"id":80},"démarrer-un-rebasage-interactif","Démarrer un rebasage interactif",[12,83,84,85,88],{},"Si votre branche est basée sur la branche principale ",[65,86,87],{},"main",", la commande pour rectifier votre branche est la suivante :",[90,91,96],"pre",{"className":92,"code":93,"language":94,"meta":95,"style":95},"language-shell shiki shiki-themes github-light","git rebase -i main\n","shell","",[65,97,98],{"__ignoreMap":95},[99,100,103,107,111,115],"span",{"class":101,"line":102},"line",1,[99,104,106],{"class":105},"s7eDp","git",[99,108,110],{"class":109},"sYBdl"," rebase",[99,112,114],{"class":113},"sYu0t"," -i",[99,116,117],{"class":109}," main\n",[12,119,120,121,126],{},"Créer ",[16,122,125],{"href":123,"rel":124},"https://git-scm.com/book/fr/v2/Les-bases-de-Git-Les-alias-Git",[],"un alias Git",", un alias shell ou encore une fonction shell pour cette commande pourra s'avérer très pratique dans la mesure où vous l'utiliserez très souvent.",[12,128,129,130,133,134,136,137,140,141,146,147,150],{},"L'option ",[65,131,132],{},"-i"," passée à ",[65,135,67],{}," est un alias pour ",[65,138,139],{},"--interactive",". Elle lance ",[16,142,145],{"href":143,"rel":144},"https://git-scm.com/docs/git-rebase/fr#git-rebase---interactive",[],"un rebasage « interactif »"," qui ouvrira votre éditeur de code. Vous y trouverez une liste des validations de votre branche, suivie de lignes de commentaires commençant par ",[65,148,149],{},"#",".\nVoici à quoi ressemble la liste des validations :",[90,152,157],{"className":153,"code":155,"language":156,"meta":95},[154],"language-text","pick 1aac632db2 first commit subject\npick a385014ad4 second commit subject\npick 6af12a88cf other commit subject\npick 5cd121e2a1 last commit subject\n","text",[65,158,155],{"__ignoreMap":95},[12,160,161,162,164,165,168],{},"Ces lignes sont des instructions sur la façon dont ",[65,163,67],{}," doit traiter ces validations. Les validations sont listées dans l'ordre chronologique, la validation la plus ancienne apparaissant en tête. (Cet ordre est l'inverse de l'ordre par défaut de ",[65,166,167],{},"git log",".) Que contiennent ces lignes ?",[42,170,171,178,181],{},[45,172,173,174,177],{},"Une instruction (dans cet exemple, ",[65,175,176],{},"pick",") qui indique à Git l'action à entreprendre",[45,179,180],{},"Un identifiant abrégé de la validation",[45,182,183],{},"Un sujet qui vous aide à identifier le contenu de la validation",[31,185,187],{"id":186},"modifier-la-liste-des-instructions","Modifier la liste des instructions",[12,189,190,191,193],{},"Vous pouvez modifier ces instructions ! Lorsque vous quittez votre éditeur de texte, ",[65,192,67],{}," lit les instructions que vous venez de modifier et les exécute dans l'ordre pour recréer votre branche comme vous le souhaitez.",[12,195,196],{},"Après les instructions pour toutes les validations, une série de lignes de commentaires explique comment modifier les lignes d'instruction, et comment chaque instruction affectera votre branche :",[42,198,199,207,213,230],{},[45,200,201,202,206],{},"Si vous ",[203,204,205],"strong",{},"supprimez la totalité de la ligne d'instruction d'une validation"," de la liste,\ncette validation ne sera pas recréée.",[45,208,201,209,212],{},[203,210,211],{},"réorganisez les lignes d'instruction",", les validations seront\nrecréées dans l'ordre que vous spécifiez.",[45,214,201,215,218,219,221,222,225,226,229],{},[203,216,217],{},"changez l'action"," de l'instruction ",[65,220,176],{}," en la remplaçant par exemple par\n",[65,223,224],{},"squash"," ou ",[65,227,228],{},"reword",", Git effectuera l'action que vous spécifiez sur cette\nvalidation.",[45,231,232,233,236],{},"Vous pouvez même ",[203,234,235],{},"ajouter de nouvelles lignes d'instruction"," avant, après ou entre\nles lignes actuelles.",[12,238,239],{},"Si les lignes de commentaires ne sont pas suffisantes, vous pouvez trouver de plus amples informations sur ce que vous pouvez faire et le fonctionnement du rebasage Git dans les ressources suivantes :",[42,241,242,251],{},[45,243,244,245,250],{},"Le chapitre ",[16,246,249],{"href":247,"rel":248},"https://git-scm.com/book/fr/v2/Utilitaires-Git-R%c3%a9%c3%a9crire-l%e2%80%99historique",[],"Utilitaires Git - Réécrire l'historique","\ndu livre « Pro Git ».",[45,252,244,253,258,259,261],{},[16,254,257],{"href":255,"rel":256},"https://git-scm.com/docs/git-rebase/fr#_mode_interactif",[],"Mode interactif","\nde la documentation ",[65,260,67],{},".",[31,263,265],{"id":264},"continuer-ou-abandonner-le-rebasage","Continuer ou abandonner le rebasage",[12,267,268,269,272],{},"Un rebasage interactif peut être interrompu en cas de conflit (comme le ferait un rebasage\nstandard) ou si vous avez utilisé une instruction telle que ",[65,270,271],{},"edit"," dans la\nligne d'instruction. Cela vous permet d'apporter certaines modifications : vous pouvez, par exemple, diviser la validation actuelle en deux validations distinctes ou résoudre le conflit de rebasage le cas échéant. Ensuite, deux options s'offrent à vous :",[42,274,275,281],{},[45,276,277,278,261],{},"Continuer le rebasage interactif à l'aide de la commande ",[65,279,280],{},"git rebase --continue",[45,282,283,284,261],{},"Abandonner le rebasage à l'aide de la commande ",[65,285,286],{},"git rebase --abort",[12,288,289,290,292],{},"(Ces options ",[65,291,67],{}," fonctionnent également lorsqu'un rebasage standard, non interactif,\ns'arrête).",[23,294,296],{"id":295},"autres-conseils-et-avantages","Autres conseils et avantages",[31,298,300],{"id":299},"essayer-les-différentes-instructions","Essayer les différentes instructions",[12,302,303,304,306,307,306,309,311,312,315,316,306,319,306,322,311,325,261],{},"Nous vous recommandons d'essayer les différentes instructions que vous pouvez utiliser dans\nchaque ligne d'instruction, en particulier ",[65,305,228],{},", ",[65,308,271],{},[65,310,224],{}," et ",[65,313,314],{},"fixup",". Vous\npouvez utiliser les versions abrégées de ces instructions : ",[65,317,318],{},"r",[65,320,321],{},"e",[65,323,324],{},"s",[65,326,327],{},"f",[31,329,331],{"id":330},"exécuter-des-commandes-shell-dans-votre-rebasage","Exécuter des commandes shell dans votre rebasage",[12,333,334,335,338],{},"Vous avez peut-être remarqué l'instruction ",[65,336,337],{},"exec \u003Ccommand>"," qui vous permet d'exécuter une commande shell quelle qu'elle soit à tout moment pendant le rebasage interactif. Cette commande sera plus utile pour les rebasages non interactifs, par exemple :",[90,340,342],{"className":92,"code":341,"language":94,"meta":95,"style":95},"git rebase --exec 'make test' main\n",[65,343,344],{"__ignoreMap":95},[99,345,346,348,350,353,356],{"class":101,"line":102},[99,347,106],{"class":105},[99,349,110],{"class":109},[99,351,352],{"class":113}," --exec",[99,354,355],{"class":109}," 'make test'",[99,357,117],{"class":109},[12,359,360,361,363],{},"(Il ne s'agit pas d'un rebasage interactif, car il ne contient pas l'option ",[65,362,132],{},").",[12,365,129,366,369],{},[65,367,368],{},"--exec \u003Ccommand>"," vous permet d'exécuter une commande shell après\nchaque validation rebasée, avec un arrêt du rebase dans le cas où la commande shell échoue (ce qui est signalé par un code de sortie différent de zéro).",[31,371,373],{"id":372},"tester-lensemble-de-vos-validations","Tester l'ensemble de vos validations",[12,375,376,377,380,381,384],{},"En passant la commande adéquate qui compile votre logiciel et exécute ses tests (par exemple, ",[65,378,379],{},"make test",") à l'option ",[65,382,383],{},"--exec",", vous pouvez vérifier que chaque validation dans votre branche se compile correctement et passe les tests.",[12,386,387,388,390],{},"Si la commande ",[65,389,379],{}," échoue, le processus de rebasage s'arrêtera. Vous pouvez alors corriger la validation en cours immédiatement, puis poursuivre le rebasage afin de tester les validations suivantes.",[12,392,393,394,399],{},"Vérifier que la compilation de chaque validation s'effectue correctement et passe tous les tests permet de s'assurer que votre code reste opérationnel. Ceci est particulièrement utile si vous souhaitez utiliser ",[16,395,398],{"href":396,"rel":397},"https://git-scm.com/docs/git-bisect/fr",[],"Git bisect"," quand vous rencontrez des régressions.",[23,401,403],{"id":402},"conclusion","Conclusion",[12,405,406],{},"Dans Git, le rebasage est un outil très polyvalent et très utile pour rectifier le code\ndes validations. Il permet de mettre en place un workflow avec des modifications qualitatives\nproposées dans des validations et des merge requests bien structurées. Développeurs et relecteurs\nn'en seront que plus efficaces. Les revues de code et le débogage gagnent également en facilité et en efficacité.",[408,409,410],"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 .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);}",{"title":95,"searchDepth":412,"depth":412,"links":413},2,[414,419,425,430],{"id":25,"depth":412,"text":26,"children":415},[416,418],{"id":33,"depth":417,"text":34},3,{"id":56,"depth":417,"text":57},{"id":71,"depth":412,"text":420,"children":421},"Rectifier vos validations avec git rebase",[422,423,424],{"id":80,"depth":417,"text":81},{"id":186,"depth":417,"text":187},{"id":264,"depth":417,"text":265},{"id":295,"depth":412,"text":296,"children":426},[427,428,429],{"id":299,"depth":417,"text":300},{"id":330,"depth":417,"text":331},{"id":372,"depth":417,"text":373},{"id":402,"depth":412,"text":403},"engineering","2022-10-06","Exploitez les fonctionnalités de Git rebase pour améliorer votre workflow.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749665560/Blog/Hero%20Images/speedmonorepo.jpg",{},true,"/fr-fr/blog/take-advantage-of-git-rebase",{"title":5,"description":433,"ogTitle":5,"ogDescription":433,"noIndex":436,"ogImage":437,"ogUrl":442,"ogSiteName":443,"ogType":444,"canonicalUrls":442},"https://about.gitlab.com/blog/take-advantage-of-git-rebase","https://about.gitlab.com","article","take-advantage-of-git-rebase","fr-fr/blog/take-advantage-of-git-rebase",[106,448,449,450],"workflow","releases","tutorial","BlogPost","2024-11-14","4fm8_JRU3Y5XJc-__9e9_QKiDIa2yOpJSu1IwCkflEI",{"logo":455,"freeTrial":460,"sales":465,"login":470,"items":475,"search":804,"minimal":840,"duo":859,"switchNav":868,"pricingDeployment":879},{"config":456},{"href":457,"dataGaName":458,"dataGaLocation":459},"/fr-fr/","gitlab logo","header",{"text":461,"config":462},"Commencer un essai gratuit",{"href":463,"dataGaName":464,"dataGaLocation":459},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":466,"config":467},"Demander une démo",{"href":468,"dataGaName":469,"dataGaLocation":459},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":471,"config":472},"Connexion",{"href":473,"dataGaName":474,"dataGaLocation":459},"https://gitlab.com/users/sign_in/","sign in",[476,505,607,612,726,782],{"text":477,"config":478,"menu":480},"Plateforme",{"dataNavLevelOne":479},"platform",{"type":481,"columns":482},"cards",[483,489,497],{"title":477,"description":484,"link":485},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":486,"config":487},"Explorer notre plateforme",{"href":488,"dataGaName":479,"dataGaLocation":459},"/fr-fr/platform/",{"title":490,"description":491,"link":492},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":493,"config":494},"Découvrir GitLab Duo",{"href":495,"dataGaName":496,"dataGaLocation":459},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":498,"description":499,"link":500},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":501,"config":502},"En savoir plus",{"href":503,"dataGaName":504,"dataGaLocation":459},"/fr-fr/why-gitlab/","why gitlab",{"text":506,"left":439,"config":507,"menu":509},"Produit",{"dataNavLevelOne":508},"solutions",{"type":510,"link":511,"columns":515,"feature":586},"lists",{"text":512,"config":513},"Voir toutes les solutions",{"href":514,"dataGaName":508,"dataGaLocation":459},"/fr-fr/solutions/",[516,541,564],{"title":517,"description":518,"link":519,"items":524},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":520},{"icon":521,"href":522,"dataGaName":523,"dataGaLocation":459},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[525,529,532,537],{"text":526,"config":527},"CI/CD",{"href":528,"dataGaLocation":459,"dataGaName":526},"/fr-fr/solutions/continuous-integration/",{"text":490,"config":530},{"href":495,"dataGaLocation":459,"dataGaName":531},"gitlab duo agent platform - product menu",{"text":533,"config":534},"Gestion du code source",{"href":535,"dataGaLocation":459,"dataGaName":536},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":538,"config":539},"Livraison de logiciels automatisée",{"href":522,"dataGaLocation":459,"dataGaName":540},"Automated software delivery",{"title":542,"description":543,"link":544,"items":549},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":545},{"href":546,"dataGaName":547,"dataGaLocation":459,"icon":548},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[550,554,559],{"text":551,"config":552},"Tests de sécurité des applications",{"href":546,"dataGaName":553,"dataGaLocation":459},"Application security testing",{"text":555,"config":556},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":557,"dataGaLocation":459,"dataGaName":558},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":560,"config":561},"Conformité logicielle",{"href":562,"dataGaName":563,"dataGaLocation":459},"/fr-fr/solutions/software-compliance/","software compliance",{"title":565,"link":566,"items":571},"Mesures",{"config":567},{"icon":568,"href":569,"dataGaName":570,"dataGaLocation":459},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[572,576,581],{"text":573,"config":574},"Visibilité et mesures",{"href":569,"dataGaLocation":459,"dataGaName":575},"Visibility and Measurement",{"text":577,"config":578},"Gestion de la chaîne de valeur",{"href":579,"dataGaLocation":459,"dataGaName":580},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":582,"config":583},"Analyses et informations",{"href":584,"dataGaLocation":459,"dataGaName":585},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":587,"type":510,"items":588},"GitLab",[589,595,601],{"text":590,"config":591},"Entreprises",{"icon":592,"href":593,"dataGaLocation":459,"dataGaName":594},"Building","/fr-fr/enterprise/","enterprise",{"text":596,"config":597},"Pour les PME",{"icon":598,"href":599,"dataGaLocation":459,"dataGaName":600},"Work","/fr-fr/small-business/","small business",{"text":602,"config":603},"Pour le secteur public",{"icon":604,"href":605,"dataGaLocation":459,"dataGaName":606},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":608,"config":609},"Tarifs",{"href":610,"dataGaName":611,"dataGaLocation":459,"dataNavLevelOne":611},"/fr-fr/pricing/","pricing",{"text":613,"config":614,"menu":616},"Ressources",{"dataNavLevelOne":615},"resources",{"type":510,"link":617,"columns":621,"feature":715},{"text":618,"config":619},"Afficher toutes les ressources",{"href":620,"dataGaName":615,"dataGaLocation":459},"/fr-fr/resources/",[622,655,682],{"title":623,"items":624},"Premiers pas",[625,630,635,640,645,650],{"text":626,"config":627},"Installation",{"href":628,"dataGaName":629,"dataGaLocation":459},"/fr-fr/install/","install",{"text":631,"config":632},"Guides de démarrage",{"href":633,"dataGaName":634,"dataGaLocation":459},"/fr-fr/get-started/","quick setup checklists",{"text":636,"config":637},"Apprentissage",{"href":638,"dataGaLocation":459,"dataGaName":639},"https://university.gitlab.com/","learn",{"text":641,"config":642},"Documentation",{"href":643,"dataGaName":644,"dataGaLocation":459},"https://docs.gitlab.com/","product documentation",{"text":646,"config":647},"Vidéos sur les bonnes pratiques",{"href":648,"dataGaName":649,"dataGaLocation":459},"/fr-fr/getting-started-videos/","best practice videos",{"text":651,"config":652},"Intégrations",{"href":653,"dataGaName":654,"dataGaLocation":459},"/fr-fr/integrations/","integrations",{"title":656,"items":657},"Découvrir",[658,663,668,673,677],{"text":659,"config":660},"Témoignages clients",{"href":661,"dataGaName":662,"dataGaLocation":459},"/fr-fr/customers/","customer success stories",{"text":664,"config":665},"Blog",{"href":666,"dataGaName":667,"dataGaLocation":459},"/fr-fr/blog/","blog",{"text":669,"config":670},"Demo Hub",{"href":671,"dataGaName":672,"dataGaLocation":459},"/fr-fr/demo-hub/","demo hub",{"text":674,"config":675},"The Source",{"href":676,"dataGaName":667,"dataGaLocation":459},"/fr-fr/the-source/",{"text":678,"config":679},"Travail à distance",{"href":680,"dataGaName":681,"dataGaLocation":459},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":683,"items":684},"Connecter",[685,690,695,700,705,710],{"text":686,"config":687},"Services GitLab",{"href":688,"dataGaName":689,"dataGaLocation":459},"/fr-fr/services/","services",{"text":691,"config":692},"Contribuer",{"href":693,"dataGaName":694,"dataGaLocation":459},"https://contributors.gitlab.com","contribute",{"text":696,"config":697},"Communauté",{"href":698,"dataGaName":699,"dataGaLocation":459},"/community/","community",{"text":701,"config":702},"Forum",{"href":703,"dataGaName":704,"dataGaLocation":459},"https://forum.gitlab.com/","forum",{"text":706,"config":707},"Événements",{"href":708,"dataGaName":709,"dataGaLocation":459},"/events/","events",{"text":711,"config":712},"Partenaires",{"href":713,"dataGaName":714,"dataGaLocation":459},"/fr-fr/partners/","partners",{"config":716,"title":719,"text":720,"link":721},{"background":717,"textColor":718},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":722,"config":723},"Lire les articles les plus récents",{"href":724,"dataGaName":725,"dataGaLocation":459},"/fr-fr/whats-new/","whats new",{"text":727,"config":728,"menu":730},"Société",{"dataNavLevelOne":729},"company",{"type":510,"columns":731},[732],{"items":733},[734,739,745,747,752,757,762,767,772,777],{"text":735,"config":736},"À propos",{"href":737,"dataGaName":738,"dataGaLocation":459},"/fr-fr/company/","about",{"text":740,"config":741,"footerGa":744},"Carrières",{"href":742,"dataGaName":743,"dataGaLocation":459},"/jobs/","jobs",{"dataGaName":743},{"text":706,"config":746},{"href":708,"dataGaName":709,"dataGaLocation":459},{"text":748,"config":749},"Leadership",{"href":750,"dataGaName":751,"dataGaLocation":459},"/company/team/e-group/","leadership",{"text":753,"config":754},"Manuel",{"href":755,"dataGaName":756,"dataGaLocation":459},"https://handbook.gitlab.com/","handbook",{"text":758,"config":759},"Relations avec les investisseurs",{"href":760,"dataGaName":761,"dataGaLocation":459},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":763,"config":764},"Trust Center",{"href":765,"dataGaName":766,"dataGaLocation":459},"/fr-fr/security/","trust center",{"text":768,"config":769},"Centre pour la transparence de l'IA",{"href":770,"dataGaName":771,"dataGaLocation":459},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":773,"config":774},"Newsletter",{"href":775,"dataGaName":776,"dataGaLocation":459},"/company/contact/#contact-forms","newsletter",{"text":778,"config":779},"Presse",{"href":780,"dataGaName":781,"dataGaLocation":459},"/press/","press",{"text":783,"config":784,"menu":785},"Nous contacter",{"dataNavLevelOne":729},{"type":510,"columns":786},[787],{"items":788},[789,794,799],{"text":790,"config":791},"Contacter l'équipe commerciale",{"href":792,"dataGaName":793,"dataGaLocation":459},"/fr-fr/sales/","talk to sales",{"text":795,"config":796},"Assistance GitLab",{"href":797,"dataGaName":798,"dataGaLocation":459},"https://support.gitlab.com/hc/en-us","support portal",{"text":800,"config":801},"Portail clients GitLab",{"href":802,"dataGaName":803,"dataGaLocation":459},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":805,"login":806,"suggestions":813},"Fermer",{"text":807,"link":808},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":809,"config":810},"GitLab.com",{"href":473,"dataGaName":811,"dataGaLocation":812},"search login","search",{"text":814,"default":815},"Suggestions",[816,819,824,826,831,836],{"text":490,"config":817},{"href":495,"dataGaName":818,"dataGaLocation":812},"GitLab Duo Agent Platform",{"text":820,"config":821},"Suggestions de code (IA)",{"href":822,"dataGaName":823,"dataGaLocation":812},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":526,"config":825},{"href":528,"dataGaName":526,"dataGaLocation":812},{"text":827,"config":828},"GitLab sur AWS",{"href":829,"dataGaName":830,"dataGaLocation":812},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":832,"config":833},"GitLab sur Google Cloud",{"href":834,"dataGaName":835,"dataGaLocation":812},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":837,"config":838},"Pourquoi utiliser GitLab ?",{"href":503,"dataGaName":839,"dataGaLocation":812},"Why GitLab?",{"freeTrial":841,"mobileIcon":846,"desktopIcon":851,"secondaryButton":854},{"text":842,"config":843},"Commencer votre essai gratuit",{"href":844,"dataGaName":464,"dataGaLocation":845},"https://gitlab.com/-/trials/new/","nav",{"altText":847,"config":848},"Icône GitLab",{"src":849,"dataGaName":850,"dataGaLocation":845},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":847,"config":852},{"src":853,"dataGaName":850,"dataGaLocation":845},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":855,"config":856},"Commencer",{"href":857,"dataGaName":858,"dataGaLocation":845},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":860,"mobileIcon":864,"desktopIcon":866},{"text":861,"config":862},"En savoir plus sur GitLab Duo",{"href":495,"dataGaName":863,"dataGaLocation":845},"gitlab duo",{"altText":847,"config":865},{"src":849,"dataGaName":850,"dataGaLocation":845},{"altText":847,"config":867},{"src":853,"dataGaName":850,"dataGaLocation":845},{"button":869,"mobileIcon":874,"desktopIcon":876},{"text":870,"config":871},"/switch",{"href":872,"dataGaName":873,"dataGaLocation":845},"#contact","switch",{"altText":847,"config":875},{"src":849,"dataGaName":850,"dataGaLocation":845},{"altText":847,"config":877},{"src":878,"dataGaName":850,"dataGaLocation":845},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":880,"mobileIcon":885,"desktopIcon":887},{"text":881,"config":882},"Retour aux tarifs",{"href":610,"dataGaName":883,"dataGaLocation":845,"icon":884},"back to pricing","GoBack",{"altText":847,"config":886},{"src":849,"dataGaName":850,"dataGaLocation":845},{"altText":847,"config":888},{"src":853,"dataGaName":850,"dataGaLocation":845},{"title":890,"button":891,"config":895},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":501,"config":892},{"href":893,"dataGaName":894,"dataGaLocation":459},"/fr-fr/gitlab-orbit/","orbit",{"layout":896,"disabled":436},"release",{"data":898},{"text":899,"source":900,"edit":906,"contribute":911,"config":915,"items":920,"minimal":1128},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":901,"config":902},"Afficher le code source de la page",{"href":903,"dataGaName":904,"dataGaLocation":905},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":907,"config":908},"Modifier cette page",{"href":909,"dataGaName":910,"dataGaLocation":905},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":691,"config":912},{"href":913,"dataGaName":914,"dataGaLocation":905},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":916,"facebook":917,"youtube":918,"linkedin":919},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[921,967,1020,1063,1095],{"title":608,"links":922,"subMenu":937},[923,927,932],{"text":924,"config":925},"Voir les forfaits",{"href":610,"dataGaName":926,"dataGaLocation":905},"view plans",{"text":928,"config":929},"GitLab Premium",{"href":930,"dataGaName":931,"dataGaLocation":905},"/fr-fr/pricing/premium/","why premium",{"text":933,"config":934},"GitLab Ultimate",{"href":935,"dataGaName":936,"dataGaLocation":905},"/fr-fr/pricing/ultimate/","why ultimate",[938],{"title":783,"links":939},[940,942,944,947,952,957,962],{"text":790,"config":941},{"href":792,"dataGaName":469,"dataGaLocation":905},{"text":795,"config":943},{"href":797,"dataGaName":798,"dataGaLocation":905},{"text":945,"config":946},"Portail clients",{"href":802,"dataGaName":803,"dataGaLocation":905},{"text":948,"config":949},"Statut",{"href":950,"dataGaName":951,"dataGaLocation":905},"https://status.gitlab.com/","status",{"text":953,"config":954},"Conditions d'utilisation",{"href":955,"dataGaName":956,"dataGaLocation":905},"/terms/","terms of use",{"text":958,"config":959},"Politique de confidentialité",{"href":960,"dataGaName":961,"dataGaLocation":905},"/fr-fr/privacy/","privacy statement",{"text":963,"config":964},"Gestion des cookies",{"dataGaName":965,"dataGaLocation":905,"id":966,"isOneTrustButton":439},"cookie preferences","ot-sdk-btn",{"title":506,"links":968,"subMenu":977},[969,973],{"text":970,"config":971},"Plateforme DevSecOps",{"href":488,"dataGaName":972,"dataGaLocation":905},"devsecops platform",{"text":974,"config":975},"Développement assisté par l'IA",{"href":495,"dataGaName":976,"dataGaLocation":905},"ai-assisted development",[978],{"title":979,"links":980},"Thèmes",[981,985,990,995,1000,1005,1010,1015],{"text":526,"config":982},{"href":983,"dataGaName":984,"dataGaLocation":905},"/fr-fr/topics/ci-cd/","cicd",{"text":986,"config":987},"GitOps",{"href":988,"dataGaName":989,"dataGaLocation":905},"/fr-fr/topics/gitops/","gitops",{"text":991,"config":992},"DevOps",{"href":993,"dataGaName":994,"dataGaLocation":905},"/fr-fr/topics/devops/","devops",{"text":996,"config":997},"Contrôle de version",{"href":998,"dataGaName":999,"dataGaLocation":905},"/fr-fr/topics/version-control/","version control",{"text":1001,"config":1002},"DevSecOps",{"href":1003,"dataGaName":1004,"dataGaLocation":905},"/fr-fr/topics/devsecops/","devsecops",{"text":1006,"config":1007},"Cloud-native",{"href":1008,"dataGaName":1009,"dataGaLocation":905},"/fr-fr/topics/cloud-native/","cloud native",{"text":1011,"config":1012},"IA pour la programmation",{"href":1013,"dataGaName":1014,"dataGaLocation":905},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1016,"config":1017},"IA agentique",{"href":1018,"dataGaName":1019,"dataGaLocation":905},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1021,"links":1022},"Solutions",[1023,1026,1028,1033,1036,1039,1042,1045,1047,1050,1053,1058],{"text":551,"config":1024},{"href":546,"dataGaName":1025,"dataGaLocation":905},"Application Security Testing",{"text":538,"config":1027},{"href":522,"dataGaName":523,"dataGaLocation":905},{"text":1029,"config":1030},"Développement Agile",{"href":1031,"dataGaName":1032,"dataGaLocation":905},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":533,"config":1034},{"href":535,"dataGaName":1035,"dataGaLocation":905},"source code management",{"text":526,"config":1037},{"href":528,"dataGaName":1038,"dataGaLocation":905},"continuous integration & delivery",{"text":577,"config":1040},{"href":579,"dataGaName":1041,"dataGaLocation":905},"value stream management",{"text":986,"config":1043},{"href":1044,"dataGaName":989,"dataGaLocation":905},"/fr-fr/solutions/gitops/",{"text":590,"config":1046},{"href":593,"dataGaName":594,"dataGaLocation":905},{"text":1048,"config":1049},"PME",{"href":599,"dataGaName":600,"dataGaLocation":905},{"text":1051,"config":1052},"Secteur public",{"href":605,"dataGaName":606,"dataGaLocation":905},{"text":1054,"config":1055},"Éducation",{"href":1056,"dataGaName":1057,"dataGaLocation":905},"/fr-fr/solutions/education/","education",{"text":1059,"config":1060},"Services financiers",{"href":1061,"dataGaName":1062,"dataGaLocation":905},"/fr-fr/solutions/finance/","financial services",{"title":613,"links":1064},[1065,1067,1069,1071,1074,1076,1079,1081,1083,1085,1087,1089,1091,1093],{"text":626,"config":1066},{"href":628,"dataGaName":629,"dataGaLocation":905},{"text":631,"config":1068},{"href":633,"dataGaName":634,"dataGaLocation":905},{"text":636,"config":1070},{"href":638,"dataGaName":639,"dataGaLocation":905},{"text":641,"config":1072},{"href":643,"dataGaName":1073,"dataGaLocation":905},"docs",{"text":664,"config":1075},{"href":666,"dataGaName":667,"dataGaLocation":905},{"text":1077,"config":1078},"Nouveautés",{"href":724,"dataGaName":725,"dataGaLocation":905},{"text":659,"config":1080},{"href":661,"dataGaName":662,"dataGaLocation":905},{"text":678,"config":1082},{"href":680,"dataGaName":681,"dataGaLocation":905},{"text":686,"config":1084},{"href":688,"dataGaName":689,"dataGaLocation":905},{"text":691,"config":1086},{"href":693,"dataGaName":694,"dataGaLocation":905},{"text":696,"config":1088},{"href":698,"dataGaName":699,"dataGaLocation":905},{"text":701,"config":1090},{"href":703,"dataGaName":704,"dataGaLocation":905},{"text":706,"config":1092},{"href":708,"dataGaName":709,"dataGaLocation":905},{"text":711,"config":1094},{"href":713,"dataGaName":714,"dataGaLocation":905},{"title":727,"links":1096},[1097,1099,1101,1103,1105,1107,1112,1117,1119,1121,1123],{"text":735,"config":1098},{"href":737,"dataGaName":729,"dataGaLocation":905},{"text":740,"config":1100},{"href":742,"dataGaName":743,"dataGaLocation":905},{"text":748,"config":1102},{"href":750,"dataGaName":751,"dataGaLocation":905},{"text":753,"config":1104},{"href":755,"dataGaName":756,"dataGaLocation":905},{"text":758,"config":1106},{"href":760,"dataGaName":761,"dataGaLocation":905},{"text":1108,"config":1109},"Développement durable",{"href":1110,"dataGaName":1111,"dataGaLocation":905},"/sustainability/","Sustainability",{"text":1113,"config":1114},"Diversité, inclusion et appartenance (DIB)",{"href":1115,"dataGaName":1116,"dataGaLocation":905},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":763,"config":1118},{"href":765,"dataGaName":766,"dataGaLocation":905},{"text":773,"config":1120},{"href":775,"dataGaName":776,"dataGaLocation":905},{"text":778,"config":1122},{"href":780,"dataGaName":781,"dataGaLocation":905},{"text":1124,"config":1125},"Déclaration de transparence sur l'esclavage moderne",{"href":1126,"dataGaName":1127,"dataGaLocation":905},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1129},[1130,1132,1134],{"text":953,"config":1131},{"href":955,"dataGaName":956,"dataGaLocation":905},{"text":963,"config":1133},{"dataGaName":965,"dataGaLocation":905,"id":966,"isOneTrustButton":439},{"text":958,"config":1135},{"href":960,"dataGaName":961,"dataGaLocation":905},[1137],{"id":1138,"title":7,"body":435,"config":1139,"content":1141,"description":435,"extension":1145,"meta":1146,"navigation":439,"path":1147,"seo":1148,"stem":1149,"__hash__":1150},"blogAuthors/en-us/blog/authors/christian-couder.yml",{"template":1140},"BlogAuthor",{"name":7,"config":1142},{"headshot":1143,"ctfId":1144},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663687/Blog/Author%20Headshots/chriscool-headshot.jpg","chriscool","yml",{},"/en-us/blog/authors/christian-couder",{},"en-us/blog/authors/christian-couder","6VsKjKNdm1XKAmFMZHj53ROyylDlxaSJhcARRkw6EQQ",[1152,1160,1168],{"title":1153,"description":1154,"heroImage":1155,"category":431,"date":1156,"authors":1157,"slug":1159,"externalUrl":435},"Green DevOps : l'importance de mesurer le bilan carbone de vos pipelines CI/CD","Les pipelines CI/CD ont un bilan carbone caché. Découvrez pourquoi il est crucial de le mesurer et comment vous lancer avec Eco CI et Carmen dans GitLab.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1765809212/noh0mdfn9o94ry9ykura.png","2026-07-22",[1158],"Lysanne Pinto","green-devops-carbon-measurement-cicd-pipeline",{"title":1161,"description":1162,"heroImage":1163,"category":431,"date":1164,"authors":1165,"slug":1167,"externalUrl":435},"Comment mettre en place l'observabilité CI/CD à grande échelle","Ce guide pratique consacré à l'analyse des pipelines GitLab aide les utilisateurs de GitLab Self-Managed à obtenir des indicateurs opérationnels exploitables grâce à Prometheus et Grafana.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-05-18",[1166],"Paul Meresanu","how-to-build-ci-cd-observability-at-scale",{"title":1169,"description":1170,"heroImage":1171,"category":431,"date":1172,"authors":1173,"slug":1175,"externalUrl":435},"5 modèles de pipeline GitLab pour résoudre vos enjeux d'ingénierie","Découvrez comment faire évoluer votre approche CI/CD avec des modèles composables pour les monorepos, les microservices, les environnements et la gouvernance.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772721753/frfsm1qfscwrmsyzj1qn.png","2026-05-06",[1174],"Omid Khan","5-ways-gitlab-pipeline-logic-solves-real-engineering-problems",{"promotions":1177},[1178,1192,1204,1216],{"id":1179,"categories":1180,"header":1182,"text":1183,"button":1184,"image":1189},"ai-modernization",[1181],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1185,"config":1186},"Obtenez votre score de maturité IA",{"href":1187,"dataGaName":1188,"dataGaLocation":667},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1190},{"src":1191},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1193,"categories":1194,"header":1196,"text":1183,"button":1197,"image":1201},"devops-modernization",[1195,1004],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1198,"config":1199},"Obtenez votre score de maturité DevOps",{"href":1200,"dataGaName":1188,"dataGaLocation":667},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1202},{"src":1203},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1205,"categories":1206,"header":1208,"text":1183,"button":1209,"image":1213},"security-modernization",[1207],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1210,"config":1211},"Obtenez votre score de maturité en matière de sécurité",{"href":1212,"dataGaName":1188,"dataGaLocation":667},"/fr-fr/assessments/security-modernization-assessment/",{"config":1214},{"src":1215},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1217,"paths":1218,"header":1221,"text":1222,"button":1223,"image":1228},"github-azure-migration",[1219,1220],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1224,"config":1225},"Découvrez les différences entre GitLab et GitHub",{"href":1226,"dataGaName":1227,"dataGaLocation":667},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1229},{"src":1203},{"header":1231,"blurb":1232,"button":1233,"secondaryButton":1237},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":461,"config":1234},{"href":1235,"dataGaName":464,"dataGaLocation":1236},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":790,"config":1238},{"href":792,"dataGaName":469,"dataGaLocation":1236},1786803765674]