致命文件系统错误后如何恢复Git?

时间:2009-02-16 10:09:41

标签: git backup restore

在主服务器上发生文件系统错误后恢复git存储库的最快路径是什么?

想象一下,您的OSS项目的中央服务器发生故障,恢复后两天的所有提交都将丢失。你怎么得到那些回来的?仅仅在所有客户端上调用“git push”就足够了吗?或者还有其他我必须考虑的事项吗?

3 个答案:

答案 0 :(得分:8)

每个存储库也是“主存储库”的备份(仅按惯例为“主要”),因此来自存储库的git push执行了最新的git fetchgit pull当然,应该是它的所有状态。你只需要处理钩子等等,但如果你说只丢失了最后两天的提交,那么这些可能并没有受到伤害。

答案 1 :(得分:2)

git pull然后git push就足够了。

或者,git push -f将使用本地副本强制更新服务器,但这可能会导致其他人出现问题(如果有多个提交者)。

如果您遇到任何进一步的问题或错误,请告诉我们。

答案 2 :(得分:1)

我认为在服务器上创建一个新的repo可能更好:

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

然后从您拥有的所有不同克隆中推送。我的想法是,这样可以避免任何可能存在于旧存储库中的损坏文件,如果您在自己的克隆上工作,并且没有人在服务器仓库中乱七八糟,那么根本不会有任何损失。