Como restaurar Git após erro de sistema de arquivos fatal?
Pergunta
O que é o caminho mais rápido para restaurar um repositório git após um erro de sistema de arquivos no servidor principal?
Imagine que o servidor central de seu projeto OSS falha e todas as submissões para dois dias são perdidos após a restauração. Como você recebe as costas? É o suficiente apenas para chamar "git push" em todos os clientes? Ou há algo mais que eu preciso levar em conta?
Solução
Cada repositório é também um backup do “repositório principal” (que é “principal” por convenção única) para um git push
a partir do repositório que fez o git fetch
mais recente ou git pull
deve ser tudo o que leva-se ao seu estado, claro. Você só precisa tomar cuidado dos ganchos e tal, mas se você diz que vale a pena que apenas os dois últimos dias de commits foram perdidos aqueles provavelmente não foram prejudicados de qualquer maneira.
Outras dicas
A git pull
e, em seguida, um git push
deve ser suficiente.
Como alternativa a git push -f
vai forçosamente atualizar o servidor com a sua cópia local, mas isso pode causar problemas para os outros (se houver vários committers).
Deixe-nos saber se você tiver quaisquer problemas ou erros.
Eu acho que poderia ser melhor para criar um novo repo no servidor:
% ssh user@server
% mv /path/to/repo /path/to/repo.old
% mkdir /path/to/repo
% cd /path/to/repo
% git init --bare
Em seguida, empurre a partir de todos os diferentes clones que você tem. Meu pensamento é que isso evitaria quaisquer arquivos corrompidos que podem estar no antigo repo, e não deve haver nenhuma perda em tudo, desde que todo o trabalho em seus próprios clones, e ninguém está brincando no repo servidor.