{"id":3495,"date":"2019-04-11T11:04:49","date_gmt":"2019-04-11T09:04:49","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=3495"},"modified":"2019-04-06T22:25:41","modified_gmt":"2019-04-06T20:25:41","slug":"modification-des-informations-dauteur-dun-commit","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3495","title":{"rendered":"Modification des informations d&rsquo;auteur d&rsquo;un commit"},"content":{"rendered":"\n<p>Apr\u00e8s avoir r\u00e9cup\u00e9r\u00e9 l&rsquo;ensemble de mes d\u00e9p\u00f4ts git avec repo, je souhaitais effectuer un peu de \u00ab\u00a0nettoyage\u00a0\u00bb dans mes informations d&rsquo;auteur de commit afin de les harmoniser. Bien entendu, cette op\u00e9ration n&rsquo;est pas du tout neutre puisqu&rsquo;elle implique une r\u00e9\u00e9criture de l&rsquo;historique, et dans le cas d&rsquo;un changement d&#8217;email, cela concerne chaque SHA-1 des commits de l&rsquo;historique (car un commit contient le SHA-1 de son parent).<\/p>\n\n\n\n<p>Int\u00e9ressons-nous \u00e0 la commande de changement des informations d&rsquo;auteur \u00e0 proprement parler. Celle-ci est extraite de la <a rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/help.github.com\/en\/articles\/changing-author-info\" target=\"_blank\">documentation de github<\/a> (si besoin, en cas d&rsquo;op\u00e9ration successive, ajouter l&rsquo;option -f avant &#8211;env-filter):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ git filter-branch --env-filter '<br><br>OLD_EMAIL=\"your-old-email@example.com\"<br>CORRECT_NAME=\"Your Correct Name\"<br>CORRECT_EMAIL=\"your-correct-email@example.com\"<br><br>if [ \"$GIT_COMMITTER_EMAIL\" = \"$OLD_EMAIL\" ]<br>then<br>    export GIT_COMMITTER_NAME=\"$CORRECT_NAME\"<br>    export GIT_COMMITTER_EMAIL=\"$CORRECT_EMAIL\"<br>fi<br>if [ \"$GIT_AUTHOR_EMAIL\" = \"$OLD_EMAIL\" ]<br>then<br>    export GIT_AUTHOR_NAME=\"$CORRECT_NAME\"<br>    export GIT_AUTHOR_EMAIL=\"$CORRECT_EMAIL\"<br>fi<br>' --tag-name-filter cat -- --branches --tags<\/pre>\n\n\n\n<p>Avant d&rsquo;\u00eatre en mesure de r\u00e9\u00e9crire les commits, on commence par d\u00e9terminer les informations existantes \u00e0 l&rsquo;aide de la commande suivante (que l&rsquo;on pourra par ailleurs ex\u00e9cuter sur tous les d\u00e9p\u00f4ts avec repo forall -c &lt;commande>) :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git log | grep Author: | sort | uniq<\/pre>\n\n\n\n<p>Une fois les changements termin\u00e9s, on pousse ces derniers vers le serveur:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git push --force --tags origin 'refs\/heads\/*'<\/pre>\n\n\n\n<p>En cas de message du type :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">erreur fatale: 'origin' does not appear to be a git repository<\/pre>\n\n\n\n<p>Il convient de v\u00e9rifier le remote configur\u00e9 avec git remote -v, soit dans mon cas :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">github  ssh:\/\/git@github.com\/vvision\/eslint-config (fetch)<br>github  ssh:\/\/git@github.com\/vvision\/eslint-config (push)<\/pre>\n\n\n\n<p>On remplace alors <em>origin<\/em> par <em>github<\/em> dans la commande <em>git push<\/em> et le tour est jou\u00e9 (configuration h\u00e9rit\u00e9e de repo).<\/p>\n\n\n\n<p>De cette mani\u00e8re, l&rsquo;ensemble de mes d\u00e9p\u00f4ts dispose d\u00e9sormais des informations de contact nettoy\u00e9es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s avoir r\u00e9cup\u00e9r\u00e9 l&rsquo;ensemble de mes d\u00e9p\u00f4ts git avec repo, je souhaitais effectuer un peu de \u00ab\u00a0nettoyage\u00a0\u00bb dans mes informations d&rsquo;auteur de commit afin de les harmoniser. Bien entendu, cette op\u00e9ration n&rsquo;est pas du tout neutre puisqu&rsquo;elle implique une r\u00e9\u00e9criture de l&rsquo;historique, et dans le cas d&rsquo;un changement d&#8217;email, cela concerne chaque SHA-1 des commits &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3495\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Modification des informations d&rsquo;auteur d&rsquo;un commit&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[408,407,15,409],"class_list":["post-3495","post","type-post","status-publish","format-standard","hentry","category-terminal","tag-auteur","tag-commit","tag-git","tag-modification"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3495"}],"version-history":[{"count":6,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3495\/revisions"}],"predecessor-version":[{"id":3517,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3495\/revisions\/3517"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}