Comment restaurer Git après une erreur de système de fichiers fatale?
Question
Quel est le chemin le plus rapide pour restaurer un dépôt git après une erreur de système de fichiers sur le serveur principal?
Imaginez le serveur central de votre projet OSS échoue et tous les commits pendant deux jours sont perdus après la restauration. Comment obtenez-vous les dos? Est-il juste assez pour appeler « git push » sur tous les clients? Ou est-il autre chose que je dois prendre en compte?
La solution
Chaque dépôt est également une sauvegarde du « référentiel principal » (qui est « principale » par convention seulement) si un git push
du dépôt qui a fait le plus récent git fetch
ou git pull
devrait être tout ce qu'il faut, à son état, bien sûr. Vous avez seulement besoin de prendre soin des crochets et tel, mais si vous dites que seuls les deux derniers jours de la valeur de commits ont été perdus entre eux étaient probablement pas lésés de toute façon.
Autres conseils
A git pull
puis un git push
devrait être suffisant.
Alternativement un git push -f
mettra à jour le serveur de force avec votre copie locale, mais cela peut causer des problèmes pour les autres (s'il y a plusieurs committers).
Faites-nous savoir si vous avez d'autres problèmes ou erreurs.
Je pense qu'il pourrait être préférable de créer un nouveau repo sur le serveur:
% ssh user@server
% mv /path/to/repo /path/to/repo.old
% mkdir /path/to/repo
% cd /path/to/repo
% git init --bare
Appuyez ensuite de tous les différents clones que vous avez. Ma pensée est que cela éviterait tous les fichiers corrompus qui peuvent être dans l'ancienne pension, et il devrait y avoir aucune perte du tout, vous avez fourni tous les travaux sur vos propres clones et Noone est de déconner dans le repo de serveur.