首页 > 解决方案 > git 远程更新失败。但是更改遥控器顺序后成功

问题描述

在今天之前,服务器工作正常。但是今天我打电话

git远程更新

错误信息显示

Fetching A
Fetching B
fatal: internal server error
remote: internal server error 
fatal: protocol error: bad pack header
error: Could not fetch B

奇怪的是,我先删除A遥控器后才能更新B成功。然后我添加 B 遥控器并再次调用更新。两台服务器更新成功。

我每次都可以报告这种情况。主存储库位于 A

  1. 初始化 Aserver 存储库
  2. 同步项目
  3. 添加B遥控器
  4. 调用“git远程更新”

我不知道这是怎么发生的,如果有人能告诉我如何解决这个问题,我将不胜感激。

标签: git

解决方案


该失败强烈表明服务器 B 上的存储库已损坏。

当您不A首先更新时它起作用的事实表明,更新A会删除一些remote/A在本地存储库中保留提交的良好副本的引用。通过避免这种情况,您保留了必须从 B 接收的提交的良好副本,这样当您向 B 询问其提交时,您的 Git 会说:啊,我已经有了这些提交,因此您的 Git 没有向 B 的 Git 询问这些提交。如果 B 上的理论(尚未证明,但可能)损坏仅影响那些提交,那么避免要求这些提交可以避免证明损坏的存在。

如果 B 上的存储库损坏(您可以通过登录到 B 服务器并git fsck在有问题的存储库上使用来测试),那么如果可能的话,您应该将其替换为在其他地方找到的良好副本。


推荐阅读