Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发生致命文件系统错误后如何恢复Git?_Git_Backup_Restore - Fatal编程技术网

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

发生致命文件系统错误后如何恢复Git?,git,backup,restore,Git,Backup,Restore,在主服务器上发生文件系统错误后,恢复git存储库的最快路径是什么 想象一下,OSS项目的中央服务器出现故障,恢复后两天内的所有提交都丢失了。你怎么把那些拿回来?在所有客户机上调用“git推送”就足够了吗?或者还有什么我必须考虑的吗?每个存储库也是“主存储库”(仅按惯例是“主存储库”)的一个备份,所以从存储库中执行最新的git获取或git提取当然应该是其状态所需的全部。你只需要处理钩子之类的东西,但是如果你说只有最后两天的提交丢失了,那么这些可能不会受到任何伤害。git pull和git push

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


想象一下,OSS项目的中央服务器出现故障,恢复后两天内的所有提交都丢失了。你怎么把那些拿回来?在所有客户机上调用“git推送”就足够了吗?或者还有什么我必须考虑的吗?

每个存储库也是“主存储库”(仅按惯例是“主存储库”)的一个备份,所以从存储库中执行最新的
git获取
git提取
当然应该是其状态所需的全部。你只需要处理钩子之类的东西,但是如果你说只有最后两天的提交丢失了,那么这些可能不会受到任何伤害。

git pull和
git push应该就足够了

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


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

我认为最好在服务器上创建新的回购协议:

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

然后从所有不同的克隆中推送。我的想法是,这将避免旧repo中可能存在的任何损坏的文件,并且应该不会有任何丢失,前提是您都使用自己的克隆,并且没有人在服务器repo中捣乱;明天我将在今天的投票中应用它:(对不起,我确实这么做了。我将删除你的所有评论!\o/+1这给了我一个新想法:要备份,我克隆repo。这样,当我将备份发送到磁带时,备份始终处于干净状态。没错。请注意,还有一个“git克隆--深度1/path/to/repo”是一个没有历史记录的回购协议,可用于部署。