J'ai créé un référentiel git pour mettre en miroir un site en direct (qui est un référentiel git non nu):
git clone --mirror ssh://[email protected]/path/to/repo
Maintenant, pour garder ce clone de miroir à jour avec tous les changements depuis son origine distante, quelle commande ou commandes dois-je utiliser?
J'aimerais que tout soit mis à jour: commits, refs, hooks, branches, etc.
Merci!
git fetch
? Ougit remote update
seul fera-t-il tout?Concernant les commits, les refs, les branches et " et cetera ", la réponse Magnus fonctionne juste (
git remote update
).Mais malheureusement, il n'y a aucun moyen de
clone
/ miroir /update
les crochets , comme je le voulais ...J'ai trouvé ce fil de discussion très intéressant sur le clonage / la mise en miroir des hooks:
http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread
J'ai appris:
Les hooks ne sont pas considérés comme faisant partie du contenu du référentiel.
Il y a plus de données, comme le
.git/description
dossier, qui ne sont pas clonées, tout comme les hooks.Les hooks par défaut qui apparaissent dans le
hooks
répertoire proviennent duTEMPLATE_DIR
Il y a cette
template
fonctionnalité intéressante sur git.Donc, je peux soit ignorer ce "cloner le truc des hooks", soit opter pour une
rsync
stratégie, étant donné les objectifs de mon miroir (sauvegarde + source pour les autres clones, uniquement).Eh bien ... j'oublierai simplement le clonage des crochets et je m'en tiendrai au
git remote update
chemin.clone
/update
, mais aussi les stashes, les rerere, etc ... Donc, pour une sauvegarde stricte,rsync
ou équivalent serait vraiment la voie à suivre. Comme ce n'est pas vraiment nécessaire dans mon cas (je peux me permettre de ne pas avoir de crochets, de cachettes, etc.), comme je l'ai dit, je m'en tiendrai auremote update
.Merci! Amélioration un peu de mon propre "git-fu" ... :-)
la source
Voir ici: Git ne clone pas toutes les branches sur les clones suivants?
Si vous voulez vraiment cela en tirant des branches au lieu de
push --mirror
, vous pouvez jeter un œil ici:"fetch --all" dans un dépôt nu git ne synchronise pas les branches locales avec les distantes
Cette réponse fournit des étapes détaillées sur la façon d'y parvenir relativement facilement:
la source
push
ce n'est pas une option pour moi parce que je dois le faire du côté de la réception (d'où se trouve le clone);pull
n'est pas non plus une option car un référentiel miroir est un référentiel nu (pas d'arbre de travail, donc pas de "pull") - il semble qu'engit remote update
effet tout fasse tout (beaucoup plus facile que la réponse référencée) ... Quoi qu'il en soit, merci! Il y a certainement des informations précieuses dans les questions / réponses liées.rsync
dans ce cas. De plus, je suppose que vous oubliez les cachettes (voir ici ) et que vous recréez des informations aussi ...?