Как восстановить Git после фатальной ошибки файловой системы? - PullRequest
3 голосов
/ 16 февраля 2009

Какой самый быстрый путь восстановления репозитория git после ошибки файловой системы на главном сервере?

Представьте, что центральный сервер вашего проекта OSS не работает, и все коммиты в течение двух дней теряются после восстановления. Как вы их вернуть? Достаточно ли просто вызвать «git push» на всех клиентах? Или я должен принять во внимание что-то еще?

Ответы [ 3 ]

8 голосов
/ 16 февраля 2009

Каждый репозиторий также является резервной копией «основного репозитория» (который является «основным» только по соглашению), поэтому git push из репозитория, который выполнил самый последний git fetch или git pull, должно быть всем, что нужно Конечно, до его состояния. Вам нужно всего лишь позаботиться о хуках и тому подобном, но если вы скажете, что были потеряны только те коммиты, которые были потрачены только за последние два дня, то, вероятно, они все равно не пострадали.

2 голосов
/ 16 февраля 2009

A git pull, а затем git push должно быть достаточно.

Альтернативно git push -f принудительно обновит сервер вашей локальной копией, но это может вызвать проблемы для других (если существует несколько коммиттеров).

Сообщите нам, если у вас возникнут какие-либо проблемы или ошибки.

1 голос
/ 16 февраля 2009

Я думаю, что может быть лучше создать новый репо на сервере:

% ssh user@server
% mv /path/to/repo /path/to/repo.old
% mkdir /path/to/repo
% cd /path/to/repo
% git init --bare

Тогда оттолкнитесь от всех своих клонов. Я думаю, что это позволит избежать любых поврежденных файлов, которые могут быть в старом репо, и не должно быть никаких потерь, при условии, что вы все работаете над своими клонами, и никто не возится в репо сервера.

...