{"id":2650,"date":"2026-08-18T08:55:41","date_gmt":"2026-08-18T06:55:41","guid":{"rendered":"https:\/\/www.fabienm.eu\/wordpress\/?p=2650"},"modified":"2026-08-18T08:55:42","modified_gmt":"2026-08-18T06:55:42","slug":"archiver-en-local-tous-ses-projets-github","status":"publish","type":"post","link":"https:\/\/www.fabienm.eu\/wordpress\/2026\/08\/18\/archiver-en-local-tous-ses-projets-github\/","title":{"rendered":"Archiver en local tous ses projets github"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Visiblement github devient de plus en plus al\u00e9atoire dans sa gestion des projets qu&rsquo;on lui confie. Pour \u00eatre sur de ne pas perdre ses projets et pour \u00e9viter d&rsquo;avoir \u00e0 passer des heures \u00e0 faire le tri entre les projets qui comptent ou pas on peut simplement faire un script pour tous les archiver en local.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour se logger en console sur github et lister les d\u00e9pots de son compte on utilisera <code>gh<\/code> :<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code lang=\"\" class=\"hljs language-php \">sudo apt install gh\n<span class=\"hljs-comment\"># S'authentifier sur github<\/span>\ngh auth login\n<span class=\"hljs-comment\"># Lister ses d\u00e9pots<\/span>\ngh repo <span class=\"hljs-keyword\">list<\/span> --limit <span class=\"hljs-number\">1000<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">On peut ensuite faire un <code>git clone --mirror<\/code> dans une boucle sur tous les projets.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code lang=\"\" class=\"hljs language-php \">gh repo <span class=\"hljs-keyword\">list<\/span> --limit <span class=\"hljs-number\">1000<\/span> --json nameWithOwner --jq <span class=\"hljs-string\">'.&#91;].nameWithOwner'<\/span> |\n<span class=\"hljs-keyword\">while<\/span> read repo; <span class=\"hljs-keyword\">do<\/span>\n    name=<span class=\"hljs-string\">\"${repo#*\/}\"<\/span>\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"=== $repo ===\"<\/span>\n\n    tmp=$(mktemp -d)\n\n    git <span class=\"hljs-keyword\">clone<\/span> --mirror <span class=\"hljs-string\">\"https:\/\/github.com\/$repo.git\"<\/span> <span class=\"hljs-string\">\"$tmp\/$name.git\"<\/span> &amp;&amp;\n    tar -cjf <span class=\"hljs-string\">\"$name.tar.bz2\"<\/span> -C <span class=\"hljs-string\">\"$tmp\"<\/span> <span class=\"hljs-string\">\"$name.git\"<\/span>\n\n    rm -rf <span class=\"hljs-string\">\"$tmp\"<\/span>\ndone<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Langage du code\u00a0:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Merci \u00e0 Chatgpt &#8230; \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visiblement github devient de plus en plus al\u00e9atoire dans sa gestion des projets qu&rsquo;on lui confie. Pour \u00eatre sur de ne pas perdre ses projets et pour \u00e9viter d&rsquo;avoir \u00e0 passer des heures \u00e0 faire le tri entre les projets &hellip; <a href=\"https:\/\/www.fabienm.eu\/wordpress\/2026\/08\/18\/archiver-en-local-tous-ses-projets-github\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[1],"tags":[415,417,143,416],"class_list":["post-2650","post","type-post","status-publish","format-standard","hentry","category-non-classe","tag-archive","tag-github","tag-programmation","tag-projet"],"_links":{"self":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=2650"}],"version-history":[{"count":2,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2650\/revisions"}],"predecessor-version":[{"id":2652,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/2650\/revisions\/2652"}],"wp:attachment":[{"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=2650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=2650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=2650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}