在主服务器上出现文件系统错误后,恢复 git 存储库的最快路径是什么?
想象一下,你的 OSS 项目的中心服务器出现故障,恢复后两天的所有提交都丢失了。你怎么把那些拿回来?仅在所有客户端上调用“git push”就足够了吗?或者还有什么我必须考虑的吗?
每个存储库也是“主存储库”(仅按照约定是“主存储库”)的备份,因此git push
来自最近执行git fetch
或git pull
应该是所有存储库的存储库 - 当然,直到它的状态。您只需要处理钩子等,但是如果您说只有最后两天的提交丢失了,那么这些提交可能无论如何都不会受到伤害。
Agit pull
然后 agit push
应该足够了。
或者,git push -f
将强制使用您的本地副本更新服务器,但这可能会给其他人带来问题(如果有多个提交者)。
如果您遇到任何进一步的问题或错误,请告诉我们。
我认为在服务器上创建一个新的 repo 可能会更好:
% ssh user@server
% mv /path/to/repo /path/to/repo.old
% mkdir /path/to/repo
% cd /path/to/repo
% git init --bare
然后从您拥有的所有不同克隆中推送。我的想法是,这将避免旧存储库中可能存在任何损坏的文件,并且根本不应该有任何损失,前提是您都在自己的克隆上工作,并且没有人在服务器存储库中乱搞。