{"title":"Commit de code","version":"6.1","locale":"fr","docname":"internals/contributing/committing-code","url":"/fr/6.1/internals/contributing/committing-code/","canonical":"https://djangodocs.dev/fr/6.1/internals/contributing/committing-code/","summary":"This section is addressed to the mergers and to anyone interested in knowing how code gets committed into Django. The Lignes directrices pour les commits apply to…","html":"<h1>Commit de code<a class=\"heading-anchor\" href=\"#committing-code\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>This section is addressed to the mergers and to anyone interested in knowing\nhow code gets committed into Django. The <a class=\"reference internal\" href=\"#committing-guidelines\"><span class=\"std std-ref\">Lignes directrices pour les commits</span></a> apply\nto all contributors, with or without commit rights.</p>\n<p>If you’re a community member who wants to contribute code to Django, look at\n<a class=\"reference internal\" href=\"/fr/6.1/internals/contributing/writing-code/working-with-git/\"><span class=\"doc\">Travailler avec Git et GitHub</span></a> instead.</p>\n<section id=\"handling-pull-requests\">\n<span id=\"id1\"></span><h2>Gestion des requêtes de contribution<a class=\"heading-anchor\" href=\"#handling-pull-requests\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Comme Django est hébergé sur GitHub, les correctifs sont fournis sous la forme de requêtes de contribution (« pull request »).</p>\n<p>En commitant une requête de contribution, vérifiez que chaque commit individuel corresponde aux lignes de conduite présentées ci-dessous. On attend des contributeurs qu’ils fournissent les meilleurs requêtes de contribution possibles. En pratique, c’est aux fusionneurs, plus familiers avec les exigences de qualité des commits, que revient la décision de parachever eux-mêmes un commit pour qu’il satisfasse aux exigences posées.</p>\n<p>Il peut être souhaitable de demander à Jenkins ou aux actions GitHub de tester la requête de contribution à l’aide d’un des constructeurs qui ne se lance pas automatiquement, tel que Oracle ou Selenium. Voir la <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/CI\">page de Wiki CI</a> pour plus d’instructions.</p>\n<p>S’il se trouve que vous deviez fréquemment récupérer localement des requêtes de contribution, cet alias git vous sera utile :</p>\n<div class=\"code-block\" data-language=\"ini\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Ini code\"><code><span class=\"k\">[alias]</span>\n<span class=\"w\">    </span><span class=\"na\">pr</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">!sh -c \\&quot;git fetch upstream pull/${1}/head:pr/${1} &amp;&amp; git checkout pr/${1}\\&quot;</span>\n</code></pre></div>\n<p>Ajoutez-le à votre fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">~/.gitconfig</span></code> et définissez <code class=\"docutils literal notranslate\"><span class=\"pre\">upstream</span></code> à <code class=\"docutils literal notranslate\"><span class=\"pre\">django/django</span></code>. Vous pouvez alors exécuter <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">pr</span> <span class=\"pre\">####</span></code> pour récupérer en local la requête de contribution correspondante.</p>\n<p>À ce stade, vous pouvez travailler sur le code. Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">rebase</span> <span class=\"pre\">-i</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">commit</span> <span class=\"pre\">--amend</span></code> pour vous assurer que les commits présentent le niveau de qualité requis. Quand vous êtes prêt :</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"c1\"># Pull in the latest changes from main.</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>pull<span class=\"w\"> </span>upstream<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span><span class=\"c1\"># Rebase the pull request on main.</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>pr/####\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>rebase<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>checkout<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span><span class=\"c1\"># Merge the work as &quot;fast-forward&quot; to main to avoid a merge commit.</span>\n<span class=\"gp\">$ </span><span class=\"c1\"># (in practice, you can omit &quot;--ff-only&quot; since you just rebased)</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>merge<span class=\"w\"> </span>--ff-only<span class=\"w\"> </span>pr/XXXX\n<span class=\"gp\">$ </span><span class=\"c1\"># If you&#39;re not sure if you did things correctly, check that only the</span>\n<span class=\"gp\">$ </span><span class=\"c1\"># changes you expect will be pushed to upstream.</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>--dry-run<span class=\"w\"> </span>upstream<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span><span class=\"c1\"># Push!</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>push<span class=\"w\"> </span>upstream<span class=\"w\"> </span>main\n<span class=\"gp\">$ </span><span class=\"c1\"># Delete the pull request branch.</span>\n<span class=\"gp\">$ </span>git<span class=\"w\"> </span>branch<span class=\"w\"> </span>-d<span class=\"w\"> </span>pr/xxxx\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM Pull in the latest changes from main.</span>\n<span class=\"gp\">...\\&gt;</span> git checkout main\n<span class=\"gp\">...\\&gt;</span> git pull upstream main\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM Rebase the pull request on main.</span>\n<span class=\"gp\">...\\&gt;</span> git checkout pr/####\n<span class=\"gp\">...\\&gt;</span> git rebase main\n<span class=\"gp\">...\\&gt;</span> git checkout main\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM Merge the work as &quot;fast-forward&quot; to main to avoid a merge commit.</span>\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM (in practice, you can omit &quot;--ff-only&quot; since you just rebased)</span>\n<span class=\"gp\">...\\&gt;</span> git merge --ff-only pr/XXXX\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM If you&#39;re not sure if you did things correctly, check that only the</span>\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM changes you expect will be pushed to upstream.</span>\n<span class=\"gp\">...\\&gt;</span> git push --dry-run upstream main\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM Push!</span>\n<span class=\"gp\">...\\&gt;</span> git push upstream main\n<span class=\"gp\">...\\&gt;</span> <span class=\"c1\">REM Delete the pull request branch.</span>\n<span class=\"gp\">...\\&gt;</span> git branch -d pr/xxxx\n</code></pre></div></div></div>\n<p>Poussez de force dans la branche après un « rebase » sur main, mais avant de fusionner et de pousser vers le dépôt amont. Cela permet d’harmoniser les empreintes de commit sur main et sur la branche ce qui va automatiquement fermer la requête de contribution.</p>\n<p>Si une requête de contribution ne doit pas être fusionnée avec plusieurs commits différents, il est possible d’utiliser le bouton «Squash and merge» du site Web. Modifiez le message de commit afin qu’il corresponde aux :ref:lignes directrices &lt;committing-guidelines&gt;` et enlevez le numéro de la requête de contribution qui est automatiquement ajouté à la première ligne du message.</p>\n<p>Lorsque vous réécrivez l’historique des commits dans une requête de contribution, l’objectif est de rendre l’historique des commits de Django le plus propre possible:</p>\n<ul class=\"simple\">\n<li><p>Si un correctif a été effectué sur plusieurs commits, réécrivez-le en un seul. Par exemple, si un commit ajoute du code et qu’un second ne fait qu’améliorer son écriture, ces commits devraient être compressés en un seul avant d’être fusionné dans le projet.</p></li>\n<li><p>Regroupez les changements de façon logique dans plusieurs commits. Si vous faites des changements cosmétiques en même temps que des modifications de code dans un autre fichier, le faire en deux commits distincts aide à relire l’historique des changements.</p></li>\n<li><p>Évitez les fusions de branches amont dans les requêtes de contribution.</p></li>\n<li><p>Les tests et la documentation devraient être validés et ne pas émettre d’avertissements ou d’erreurs après chaque commit.</p></li>\n<li><p>Les petits correctifs triviaux devraient être fait dans un seul commit. Les contributions plus importantes peuvent être fait en plusieurs commits si cela est plus claire.</p></li>\n</ul>\n<p>Conformément au concept « pratique vaut mieux que pureté », c’est à chaque fusionneur de décider de la manipulation d’historique nécessaire pour une requête de contribution. Les points essentiels sont l’engagement de la communauté, le travail bien fait et un historique de commit utilisable.</p>\n</section>\n<section id=\"committing-guidelines\">\n<span id=\"id2\"></span><h2>Lignes directrices pour les commits<a class=\"heading-anchor\" href=\"#committing-guidelines\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>These guidelines apply to all commits to Django’s Git repository, whether\nsubmitted by a contributor via a pull request or landed directly by a merger:</p>\n<ul>\n<li><p>Ne modifiez jamais l’historique publié des branches <code class=\"docutils literal notranslate\"><span class=\"pre\">django/django</span></code> en poussant (push) de force. Si vous devez absolument le faire (par exemple pour des raisons de sécurité), discutez d’abord de la situation avec l’équipe principale.</p></li>\n<li><p>Pour toute modification moyenne à importante, où « moyenne à importante » dépend de votre jugement, présentez la situation sur le <a class=\"reference external\" href=\"https://forum.djangoproject.com/\">forum Django</a> avant de procéder au changement.</p>\n<p>SI vous exposez quelque chose et que personne ne répond, ne considérez pas que cela signifie que votre idée est géniale et qu’elle doit être mise en œuvre immédiatement car personne ne la contestée. Tout le monde n’a pas toujours beaucoup de temps pour lire immédiatement les discussions, il se peut donc que vous deviez attendre un certain nombre de jours avant d’obtenir une réponse.</p>\n</li>\n<li><p>Write detailed commit messages in the past tense, not present tense, and\nend the subject line with a period.</p>\n<ul class=\"simple\">\n<li><p>Correct: « Fixed Unicode bug in RSS API. »</p></li>\n<li><p>Incorrect: « Fixes Unicode bug in RSS API. » (present tense)</p></li>\n<li><p>Incorrect: « Fixing Unicode bug in RSS API. » (« -ing » form)</p></li>\n<li><p>Incorrect: « Fixed Unicode bug in RSS API » (missing trailing period)</p></li>\n</ul>\n<p>The commit message should be in lines of 72 chars maximum. There should be\na subject line, separated by a blank line and then paragraphs of 72 char\nlines. The limits are soft. For the subject line, shorter is better.</p>\n<p>In the body of the commit message more detail is better than less, and should\nexplain <em>why</em> the change was made, not <em>what</em> was changed or <em>how</em>. The code\nitself shows what changed; the commit message should provide the context and\nreasoning that the code cannot.</p>\n<p>Credit the contributors in the commit message: « Thanks A for the report and B\nfor review. » Use git’s <a class=\"reference external\" href=\"https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors\">Co-Authored-By</a> as appropriate, including anyone\nwhose earlier work the change builds on.</p>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"None code\"><code>Fixed #18307 -- Added git workflow guidelines.\n\nRefactored the Django&#39;s documentation to remove mentions of SVN\nspecific tasks. Added guidelines of how to use Git, GitHub, and\nhow to use pull request together with Trac instead.\n\nThanks to Full Name for the report, and to Reviewer for reviews.\n</code></pre></div>\n</li>\n<li><p>Limitez les commits à la plus petite granularité qui garde du sens. Cela signifie qu’il est préférable d’avoir plusieurs petits commits fréquents plutôt que de gros commits ponctuels. Par exemple, si l’implémentation de la fonctionnalité X requiert une petite modification à la bibliothèque Y, alors faites le commit de la fonctionnalité X séparément. Cela aide <em>grandement</em> toutes les personnes qui suivent vos modifications.</p></li>\n<li><p>Separate bug fixes from feature changes. Bugfixes may need to be\n<a class=\"reference internal\" href=\"#backports\"><span class=\"std std-ref\">backported</span></a>.</p></li>\n<li><p>Si un commit ferme un ticket dans le <a class=\"reference external\" href=\"https://code.djangoproject.com/\">système de suivi</a> de Django, commencez le message de commit par le texte « Fixed #xxxxx », où « xxxxx » est le numéro du ticket résolu par le commit. Example : « Fixed #123 – Added whizbang feature. ». Nous avons adapté Trac pour que tout message de commit respectant ce format ferme automatiquement le ticket référencé et écrive un message sur le ticket contenant le message de commit complet.</p>\n<p>Pour les curieux, nous utilisons un <a class=\"reference external\" href=\"https://github.com/trac-hacks/trac-github\">greffon Trac</a> pour cela.</p>\n</li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Notez que l’intégration Trac ne sait pas tout sur les requêtes de contribution. AInsi si vous essayez de fermer une requête de contribution avec la phrase « closes #400 » dans le message de commit, GitHub fermera la requête, mais le greffon Trac ne fermera pas le ticket ayant le même numéro dans Trac.</p>\n</aside>\n<ul class=\"simple\">\n<li><p>Si votre commit fait référence à un ticket dans le <a class=\"reference external\" href=\"https://code.djangoproject.com/\">suivi des tickets</a> de Django mais ne résoud <em>pas</em> le ticket, incluez l’expression « Refs #xxxxx », où « xxxxx » est le numéro de ticket référencé par votre commit. Cela enverra automatiquement un commentaire dans le ticket concerné.</p></li>\n</ul>\n</section>\n<section id=\"backports\">\n<span id=\"id3\"></span><h2>Backports<a class=\"heading-anchor\" href=\"#backports\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Bug fix backports to stable branches are done exclusively by mergers, following\nthe <a class=\"reference internal\" href=\"/fr/6.1/internals/release-process/#supported-versions-policy\"><span class=\"std std-ref\">Versions prises en charge</span></a>. A backport consists of cherry-picking a\ncommit from <code class=\"docutils literal notranslate\"><span class=\"pre\">main</span></code> onto the target <code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></code> branch.</p>\n<p>A backport commit must include two things beyond the original commit message:</p>\n<ul class=\"simple\">\n<li><p>A prefix <code class=\"docutils literal notranslate\"><span class=\"pre\">[A.B.x]</span></code> on the subject line, where <code class=\"docutils literal notranslate\"><span class=\"pre\">A.B.x</span></code> is the name of the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">stable/A.B.x</span></code> branch being targeted.</p></li>\n<li><p>A suffix <code class=\"docutils literal notranslate\"><span class=\"pre\">Backport</span> <span class=\"pre\">of</span> <span class=\"pre\">&lt;sha&gt;</span> <span class=\"pre\">from</span> <span class=\"pre\">main.</span></code> line in the commit body, pointing\nto the original commit hash.</p></li>\n</ul>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"None code\"><code>[1.3.x] Fixed #17028 -- Changed diveintopython.org -&gt; diveintopython.net.\n\nBackport of 80c0cbf1c97047daed2c5b41b296bbc56fe1d7e3 from main.\n</code></pre></div>\n<p>If the backport also fixes a regression, add a line identifying the commit that\nintroduced it:</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"None code\"><code>Regression in 6ecccad711b52f9273b1acb07a57d3f806e93928.\n</code></pre></div>\n<p>There are three ways to do a backport, depending on your workflow:</p>\n<p><strong>Option 1: fully manual</strong></p>\n<p>Cherry-pick the commit onto the stable branch, then amend the commit message to\nadd the required prefix and backport note:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>git<span class=\"w\"> </span>cherry-pick<span class=\"w\"> </span>&lt;sha&gt;\ngit<span class=\"w\"> </span>commit<span class=\"w\"> </span>--amend\n</code></pre></div>\n<p>If the cherry-pick produces conflicts, resolve them, stage the changes, then\nrun <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">cherry-pick</span> <span class=\"pre\">--continue</span></code> before amending. This option requires no\nsetup but relies entirely on remembering to format the message correctly.</p>\n<p><strong>Option 2: using the helper script in the repo</strong></p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">scripts/backport.sh</span></code> Bash script automates the cherry-pick and rewrites\nthe commit message with the correct prefix and backport note. Run it from the\ntarget stable branch:</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>bash<span class=\"w\"> </span>scripts/backport.sh<span class=\"w\"> </span>&lt;sha&gt;\n</code></pre></div>\n<p>This is straightforward for clean cherry-picks, but if conflicts are produced,\nyou will need to resolve them manually and add the prefix and backport note to\nthe commit message yourself.</p>\n<p><strong>Option 3: using the</strong> <code class=\"docutils literal notranslate\"><span class=\"pre\">prepare-commit-msg</span></code> <strong>git hook</strong></p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">scripts/prepare_commit_msg.py</span></code> Python script can be installed as a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">prepare-commit-msg</span></code> git hook. It automatically adds the <code class=\"docutils literal notranslate\"><span class=\"pre\">[A.B.x]</span></code> prefix\nto the subject line, appends <code class=\"docutils literal notranslate\"><span class=\"pre\">Backport</span> <span class=\"pre\">of</span> <span class=\"pre\">&lt;sha&gt;</span> <span class=\"pre\">from</span> <span class=\"pre\">main.</span></code> to the commit\nbody, and ensures the subject line ends with a period, even when the\ncherry-pick produces conflicts. To install it, create an executable file\n<code class=\"docutils literal notranslate\"><span class=\"pre\">.git/hooks/prepare-commit-msg</span></code> containing:</p>\n<div class=\"code-block\" data-language=\"sh\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Sh</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Sh code\"><code><span class=\"ch\">#!/bin/sh</span>\n<span class=\"nb\">exec</span><span class=\"w\"> </span>python<span class=\"w\"> </span>scripts/prepare_commit_msg.py<span class=\"w\"> </span><span class=\"s2\">&quot;</span><span class=\"nv\">$@</span><span class=\"s2\">&quot;</span>\n</code></pre></div>\n<p>Once installed, a plain <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">cherry-pick</span> <span class=\"pre\">&lt;sha&gt;</span></code> on a stable branch is\nsufficient; the hook handles the message formatting in all cases.</p>\n</section>\n<section id=\"reverting-commits\">\n<h2>Annulation de commits<a class=\"heading-anchor\" href=\"#reverting-commits\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Personne n’est parfait ; des erreurs seront forcément commises.</p>\n<p>Mais faites tout votre possible pour que de telles erreurs ne se produisent pas. Le fait d’avoir une politique d’annulation ne vous enlève pas la responsabilité de viser la plus haute qualité possible. Sérieusement, vérifiez votre travail autant de fois que nécessaire ou faites-le vérifier par un autre fusionneur <strong>avant</strong> de procéder au commit !</p>\n<p>Lorsqu’un commit fautif est découvert, veuillez suivre les directives suivantes :</p>\n<ul class=\"simple\">\n<li><p>Si possible, faites faire l’annulation d’un commit par son auteur.</p></li>\n<li><p>N’annulez pas les modifications d’un autre auteur sans la permission de celui-ci.</p></li>\n<li><p>Utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">revert</span></code> – ce qui va produire un commit d’annulation, le commit original faisant toujours partie de l’historique des commits.</p></li>\n<li><p>Si l’auteur d’origine ne peut pas être contacté (dans un espace de temps raisonnable, un à deux jours) et que le problème est sérieux (bogue de plantage, échecs de tests majeurs, etc.), demandez sur le <a class=\"reference external\" href=\"https://forum.djangoproject.com/\">forum Django</a> s’il y a des oppositions puis procédez à l’annulation s’il n’y en a pas.</p></li>\n<li><p>Si le problème est mineur (par ex. un commit de fonctionnalité après le gel des fonctionnalités), attendez encore un peu.</p></li>\n<li><p>S’il y a désaccord entre le fusionneur et celui qui propose l’annulation, il s’agit de résoudre le conflit sur le <a class=\"reference external\" href=\"https://forum.djangoproject.com/\">forum Django</a>. Si aucun accord n’est trouvé, la décision doit alors être soumise à un vote.</p></li>\n<li><p>Si le commit a introduit une vulnérabilité de sécurité confirmée et révélée, le commit peut être immédiatement annulé sans obtenir de permission supplémentaire.</p></li>\n<li><p>Le mainteneur de la branche versionnée peut annuler des commits de cette branche sans demander de permission si un commit casse cette branche versionnée.</p></li>\n<li><p>Si vous avez poussé par erreur une branche de travail vers <code class=\"docutils literal notranslate\"><span class=\"pre\">django/django</span></code>, supprimez-la. Par exemple, si vous avez écrit : <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">push</span> <span class=\"pre\">upstream</span> <span class=\"pre\">feature_antigravity</span></code>, procédez à la commande inverse : <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">push</span> <span class=\"pre\">upstream</span> <span class=\"pre\">:feature_antigravity</span></code>.</p></li>\n</ul>\n</section>","rootId":"committing-code","toc":[{"title":"Gestion des requêtes de contribution","anchor":"handling-pull-requests","children":[]},{"title":"Lignes directrices pour les commits","anchor":"committing-guidelines","children":[]},{"title":"Backports","anchor":"backports","children":[]},{"title":"Annulation de commits","anchor":"reverting-commits","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Fonctionnement interne du projet Django","url":"/fr/6.1/internals/"},{"docname":"internals/contributing/index","title":"Contribuer à Django","url":"/fr/6.1/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Contribution au code","url":"/fr/6.1/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/accessibility","title":"Accessibilité","url":"/fr/6.1/internals/contributing/accessibility/"},"next":{"docname":"internals/contributing/writing-documentation","title":"Écrire la documentation","url":"/fr/6.1/internals/contributing/writing-documentation/"},"formats":{"html":"/fr/6.1/internals/contributing/committing-code/","markdown":"/fr/6.1/internals/contributing/committing-code.md","json":"/fr/6.1/internals/contributing/committing-code.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/internals/contributing/committing-code.txt","official":"https://docs.djangoproject.com/fr/6.1/internals/contributing/committing-code/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}