Wie Git nach fatal Dateisystemfehler wiederherzustellen?
Frage
Was ist der schnellste Weg eine Git-Repository nach einem Dateisystemfehler auf dem Hauptserver?
wiederherstellenStellen Sie sich den zentralen Server Ihres OSS-Projekt schlägt fehl, und alle Commits für zwei Tage verloren nach der Wiederherstellung. Wie bekommt man jene zurück? Ist es genug, nur „git push“ auf allen Clients zu nennen? Oder gibt es etwas, das ich berücksichtigen muss?
Lösung
Jedes Repository ist auch eine Sicherung des „Haupt-Repository“ (die nur „main“ vereinbarungsgemäß ist) so ein git push
aus dem Repository, das die jüngsten git fetch
oder git pull
haben sollte alles was man braucht Maßnahmen zu seinem Zustand sein, Na sicher. Sie müssen nur die Betreuung des Haken nehmen und so, aber wenn Sie sagen, dass nur die letzten zwei Tage im Wert von Commits die wohl ohnehin nicht zu Schaden gekommen war verloren.
Andere Tipps
Ein git pull
und dann ein git push
sollten genug sein.
Alternativ kann ein git push -f
wird der Server mit der lokalen Kopie gewaltsam aktualisieren, aber dies kann Probleme für andere verursachen (wenn es mehrere Committer).
Lassen Sie uns wissen, wenn Sie irgendwelche weiteren Probleme oder Fehler führen.
Ich denke, es könnte besser sein, eine neue Repo auf dem Server zu erstellen:
% ssh user@server
% mv /path/to/repo /path/to/repo.old
% mkdir /path/to/repo
% cd /path/to/repo
% git init --bare
Dann drücken Sie aus den verschiedenen Klonen, die Sie haben. Mein Denken ist, dass diese keine beschädigten Dateien vermeiden würde, die in der alten Repo sein können, und es sollte überhaupt keinen Verlust sein, vorausgesetzt, alle Arbeiten auf die eigene Klone, und niemand wird Herumspiele im Server-Repo.