La page d'aide de git clone contient ce qui suit --mirror
:
Mettre en place un miroir du dépôt distant. Cela implique que
--bare
.
Mais il n'entre pas dans les détails de la manière dont la --mirror
est différent d'un clone --bare
clone.
La page d'aide de git clone contient ce qui suit --mirror
:
Mettre en place un miroir du dépôt distant. Cela implique que
--bare
.
Mais il n'entre pas dans les détails de la manière dont la --mirror
est différent d'un clone --bare
clone.
Un clone copie les refs de la télécommande et les place dans un sous-répertoire nommé "ce sont les refs que possède la télécommande".
Un miroir copie les références du site distant et les place dans son propre niveau supérieur - il remplace ses propres références par celles du site distant.
Cela signifie que lorsque quelqu'un tire de votre miroir et place les refs du miroir dans son sous-répertoire, il obtiendra les mêmes refs que ceux qui se trouvaient sur l'original. Le résultat de la récupération à partir d'un miroir à jour est le même que la récupération directement à partir du repo initial.
Contrairement à git clone
, git clone --mirror
y git clone --bare
Les deux sont des dépôts nus. La différence entre les deux réside dans le config
fichier.
git clone
ressemble à un fichier de configuration :
[remote "origin"]
url = https://github.com/example
fetch = +refs/heads/*:refs/remotes/origin/*
git clone --bare
ressemble à un fichier de configuration :
[remote "origin"]
url = https://github.com/example
git clone --mirror
ressemble à un fichier de configuration :
[remote "origin"]
url = https://github.com/example
fetch = +refs/*:refs/*
mirror = true
Nous constatons donc que la principale différence réside dans l'utilisation de la refspec à utiliser pour la recherche
Le format de la spécification de référence est, tout d'abord, un élément optionnel
+
, suivi de<src>:<dst>
donde<src>
est le modèle pour les références sur le du côté distant et<dst>
est l'endroit où ces références seront suivies localement. Les+
indique à Git de mettre à jour la référence même s'il ne s'agit pas d'une référence avance rapide.
En cas de git clone
qui est automatiquement écrit par un git remote add origin
Git récupère toutes les références sous la commande refs/heads/
sur le serveur et les écrit dans refs/remotes/origin/
localement.
En cas de git clone --bare
il n'y a pas de refspec à utiliser pour la recherche.
En cas de git clone --mirror
La spécification de référence à utiliser pour la recherche ressemble à ce qui suit fetch = +refs/*:refs/*
. Cela signifie, tags
, remotes
, replace
(qui est sous refs
) avec heads
sera également récupérée. Notez que, par défaut git clone
ne récupérer que heads
.
NOTE 1 : git clone --mirror
y git clone --bare --mirror
sont équivalents.
NOTE 2 : il y a également des différences dans packed-refs
. Comme il enregistre les mêmes informations que refs/heads/
, refs/tags/
et les amis enregistrent de manière plus efficace.
$ git clone --bare https://github.com/example
Cette commande rendra le nouveau " example
"lui-même le répertoire $GIT_DIR (au lieu de example/.git
). De même, les têtes de branches à distance sont copiées directement dans les têtes de branches locales correspondantes, sans mise en correspondance. Lorsque cette option est utilisée, ni les branches de suivi à distance ni les variables de configuration correspondantes ne sont créées.
$ git clone --mirror https://github.com/example
Comme pour un clone nu, un clone miroir inclut toutes les branches et étiquettes distantes, mais toutes les références locales (y compris les branches de suivi à distance, les notes, etc.) seront écrasées à chaque fois que vous récupérez, de sorte qu'il sera toujours identique au dépôt original.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
6 votes
Utile, mais si vous voulez aussi pousser ce miroir vers un repo distant comme github, j'ai trouvé ce lien pratique.