# Git clone mirror

**URL:** <https://www.debian-fr.org/t/git-clone-mirror/92304>\
**Category:** Support Debian\
**Created:** [Mai 7, 2026, 12:19 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304 "2026-05-07T00:19:19Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lien\_Rag](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/ba8739/32.png) [@Lien\_Rag](https://www.debian-fr.org/u/Lien_Rag)\
**Post date:** [Mai 7, 2026, 12:19 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/1 "2026-05-07T00:19:19Z")

</div>

Bonjour Debian.  
FreeOrion ne veut pas quitter Github (les méchants).  
Je veux donc faire un miroir sur Codeberg afin de pouvoir contribuer sans me salir les mains (enfin les octets).  
Codeberg n’offre pas à ma connaissance d’outils pour ça.

J’ai donc fait un git clone --mirror [https://github.com/freeorion/freeorion.git](https://github.com/freeorion/freeorion.git) sur mon PC puis un git remote add bergFO [LienRag/freeorion: FreeOrion clone of github code - Codeberg.org](https://codeberg.org/LienRag/freeorion.git)  
et un git push -u bergFO master

J’ai ensuite été surpris de ne pas trouver les fichiers de code dans mon répertoire git quand j’ai voulu commencer à faire des modifications, mais apparemment c’est normal et un git clone --mirror ne récupère pas le code lui-même, seulement la structure du répertoire (oui, je suis un noob en git).

On m’a expliqué qu’en fait je n’aurais pas dû faire un git clone --mirror, mais juste un git clone  
Pourtant quand je fouille un peu sur le net (par exemple ici [https://medium.com/@paul.pietzko/mirroring-a-github-repository-keep-your-fork-updated-automatically-3dcc199b647c](https://medium.com/@paul.pietzko/mirroring-a-github-repository-keep-your-fork-updated-automatically-3dcc199b647c) ) de ce que je comprends c’est bien un git clone --mirror qui est la bonne solution pour ce que je veux faire.

Mais aucun des sites que j’ai trouvé n’explique comment accéder aux fichiers de code une fois qu’on a fait le mirror…

Si j’ai bien compris on ne peut pas travailler sur le mirror (par nature) donc il faut faire un git worktree add bidule pour avoir un arbre de travail où on peut modifier les fichiers, mais comment on récupère les fichiers pour pouvoir travailler dessus ?

Également est-ce que j’aurais dû faire le git push -u bergFO j’aurais dû le faire également avec l’option --mirror ?  
C’est trop tard ou bien je peux le faire maintenant ?

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 5:12 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/2 "2026-05-07T05:12:44Z")

</div>

Ça semble normal que tu ne voies pas les fichiers, car l’option `--mirror` crée ton image avec le mode «&nbsp;bare&nbsp;», qui est utilisé pour stocker le repository sur un serveur, là où personne ne développe.

Ceci étant dit, je ne suis pas trop sûr de comprendre ce que tu souhaites faire… En mettant un repository alternatif sur un autre serveur, tu te retrouves un peu comme si tu avais fait un fork amélioré, càd qu’il n’y a aucun lien direct entre le repository Codeberg et celui sur Github. Le seul lien reste indirect, et passe par ton PC, ce qui fait que quand tu voudras envoyer ton travail sur Github, ce sera depuis ton PC, je ne sais pas si c’est ça que tu appelles «&nbsp;te salir les mains&nbsp;», et je ne sais pas ton objectif initial est atteint. Tu récupéreras les changements de Github sur ton PC avant de pouvoir le charger sur Codeberg.

La solution expliquée dans le lien que tu donnes ne permet pas de contribuer au développement sur ton PC, c’est juste pour avoir un genre de sauvegarde du repository initial, qu’on puisse facilement rafraîchir au fur et à mesure que le projet initial évolue.

Pour réparer le tir, voici ce que je pense qu’il faudrait faire :

- Ajouter un remote dans Codeberg qui pointe vers Github, afin de pouvoir mettre à jour directement de Github vers Codeberg (et inversement) sans passer par ton PC
- Virer le repository de ton PC, qui aura servi seulement pour la transition
- Recréer un repository sur ton PC à partir d’un clone (sans `--mirror` 😉) de Codeberg.

Ta chaîne sera donc Github (bare) \<-\> Codeberg (bare) \<-\> PC local. Je pense qu’il faudrait qu’un expert git confirme que ma solution est faisable, je n’ai jamais fait ça.

---

<div class="post-metadata">

**Author:** ![Lien\_Rag](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/ba8739/32.png) [@Lien\_Rag](https://www.debian-fr.org/u/Lien_Rag)\
**Post date:** [Mai 7, 2026, 7:44 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/3 "2026-05-07T07:44:42Z")

</div>

> [@Thierz](#):
>
> Ajouter un remote dans Codeberg qui pointe vers Github

Comment on fait ça ?  
Codeberg me dit «&nbsp;Pull mirrors have been disabled by your site administrator.&nbsp;» et quand je regarde [la doc de Forgejo](https://forgejo.org/docs/latest/user/repo-mirror/#pulling-from-a-remote-repository) ils disent «&nbsp;Once the repository is created, you can’t convert it into a pull mirror anymore.&nbsp;».  
Et pour créer un miroir depuis github, il faut passer par leur procédure de migration, qui échoue régulièrement quand je la tente.  
Il faut dire qu’ils demandent un access token du dépôt Github, et que je n’en ai pas (ne gérant pas le dépôt Github).

[quote=«&nbsp;Thierz, post:2, topic:92304&nbsp;»] Tu récupéreras les changements de Github sur ton PC avant de pouvoir le charger sur Codeberg.  
[/quote]

Oui c’est ce que je veux faire, puisque je ne trouve pas de solution directe (un pull mirroring serait plus simple, mais ça marche pas).

> [@Thierz](#):
>
> quand tu voudras envoyer ton travail sur Github

Je ne veux pas envoyer mon travail sur Github justement, mais sur Codeberg.  
Par contre il faut que le dépôt Codeberg (branche principale, pas ma branche à moi) soit à jour, sinon mon code risque de ne pas être compatible avec la branche en production.

> [@Thierz](#):
>
> Ça semble normal que tu ne voies pas les fichiers, car l’option `--mirror` crée ton image avec le mode « bare », qui est utilisé pour stocker le repository sur un serveur, là où personne ne développe.

Oui c’est ce que l’on m’a expliqué.  
Mais donc comment je fais pour avoir les fichiers ?  
On m’a dit d’ajouter un worktree (j’ai à moitié compris ce que ça veut dire), mais une fois ajouté le worktree, comment je fais pour avoir les fichiers ?

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 8:05 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/4 "2026-05-07T08:05:27Z")

</div>

> [@Lien\_Rag](#):
>
> > [@Thierz](#):
> >
> > quand tu voudras envoyer ton travail sur Github
> 
> Je ne veux pas envoyer mon travail sur Github justement, mais sur Codeberg.

Excuse-moi mais ceci est en contradiction avec ce que tu disais plus haut :

> [@Lien\_Rag](#):
>
> FreeOrion ne veut pas quitter Github (les méchants).  
> Je veux donc faire un miroir sur Codeberg afin de pouvoir contribuer

Si tu veux contribuer, à un moment il faut tu puisses remonter ton code sur Github. Si l’équipe ne veut pas migrer sur Codeberg, il y a peu de chances qu’ils aillent voir ton repository sur Codeberg pour voir ce qui serait intéressant à fusionner chez eux : en faisant ainsi, tu leur ajoute une complexité qui va probablement à l’encontre de la facilité qu’ils ont sur Github à fusionner le travail contribué par la communauté.

Je vais te dire le fond de ma pensée : si tu veux vraiment contribuer (càd écrire du code qui sera repris par le projet initial), utilise les outils qu’ils ont mis en place pour leur organisation, quitte à te salir les doigts, et ne leur ajoute pas une charge de travail pour aller se sourcer dans tes outils rajoutés à côté. Surtout que, pour mettre en place ce que tu veux faire, je soupçonne que tu vas y passer un certain temps, et ce serait dommage que tu aies investi ce temps pour qu’au final personne ne vienne voir ton code sur Codeberg. Tu ne penses pas ?

---

<div class="post-metadata">

**Author:** ![Lien\_Rag](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/ba8739/32.png) [@Lien\_Rag](https://www.debian-fr.org/u/Lien_Rag)\
**Post date:** [Mai 7, 2026, 10:59 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/5 "2026-05-07T10:59:06Z")

</div>

> [@Thierz](#):
>
> Si l’équipe ne veut pas migrer sur Codeberg, il y a peu de chances qu’ils aillent voir ton repository sur Codeberg pour voir ce qui serait intéressant à fusionner chez eux

Si si, c’est le modus vivendi que l’on a trouvé.  
Je pousse mon code sur Codeberg, et une fois qu’il est propre et prêt à être mergé ils s’occupent de le récupérer.  
(en tous cas y’a deux personnes dans l’équipe qui sont d’accord pour faire ça, et le lead dev n’y voit pas d’inconvénient)

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 12:14 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/6 "2026-05-07T12:14:20Z")

</div>

Ah d’accord… Alors la préco ce serait de garder ton repository mirror sur ton PC, uniquement pour maintenir à jour Codeberg (Github → PC → Codeberg), et un second repository sur ton PC pour développer (PC → Codeberg). Pour ce second repository local, cette fois-ci fais juste un `git clone` de Codeberg.

---

<div class="post-metadata">

**Author:** ![Lien\_Rag](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/ba8739/32.png) [@Lien\_Rag](https://www.debian-fr.org/u/Lien_Rag)\
**Post date:** [Mai 7, 2026, 2:09 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/7 "2026-05-07T14:09:45Z")

</div>

Donc je fais un git worktree add bidule, et après je fais un git clone simple dans l’arbre de travail bidule ?

Et pour le déôt codeberg, je refais un push avec l’option --mirror ou bien c’est pas la peine/ce n’est plus possible ?

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 2:20 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/8 "2026-05-07T14:20:48Z")

</div>

> [@Lien\_Rag](#):
>
> Et pour le déôt codeberg, je refais un push avec l’option --mirror ou bien c’est pas la peine/ce n’est plus possible ?

Quand tu feras une synchro Github → PC → Codeberg, pour synchroniser Codeberg avec l’avancement du développement de la communauté Github, tu utiliseras l’option `--mirror` comme expliqué dans ton lien ci-dessus.

Et quand tu feras un push sur Codeberg des développements de ton repository local de travail, un `git push` simple suffira.

Attention à bien gérer tes branches de dév comme communiqué par le projet Github, pour ne pas te taper des conflits quand tu push vers Codeberg.

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 2:23 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/9 "2026-05-07T14:23:00Z")

</div>

> [@Lien\_Rag](#):
>
> Donc je fais un git worktree add bidule, et après je fais un git clone simple dans l’arbre de travail bidule ?

Heu, pour ça, je ne connais pas la commande worktree, je ne peux pas te dire. Tu veux faire cette commande où ?

---

<div class="post-metadata">

**Author:** ![Lien\_Rag](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/ba8739/32.png) [@Lien\_Rag](https://www.debian-fr.org/u/Lien_Rag)\
**Post date:** [Mai 7, 2026, 5:25 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/10 "2026-05-07T17:25:06Z")

</div>

Bonne question…

Dans le repository mirroré, j’imagine ?

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Mai 7, 2026, 8:34 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/11 "2026-05-07T20:34:19Z")

</div>

Un simple `git clone` de ton repository Codeberg dans un nouveau dossier du PC fera l’affaire.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Mai 7, 2026, 8:53 UTC](https://www.debian-fr.org/t/git-clone-mirror/92304/12 "2026-05-07T20:53:10Z")

</div>

Tu peux très bien travailler avec deux remote, il te suffit du coup de pull avant chaque travaille et push une fois fini sur Codeberg.

Je comprends pas par contre l’aversion pour Github (ça reste un outil et si c’est pour le côté il pourrait récupérer ton code faut voir la licence du projet surtout) …  
Quant au gavage d’une IA c’est déjà le cas une fois le code mergé dans la branche _main_ voir même par _crawling_ sur le net.
