在今天之前,服务器可以正常工作。 但是今天我打电话
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遥控器添加回去并再次调用update。两台服务器更新成功。
我可以每次报告这种情况。主存储库位于A
我不知道这是怎么发生的,如果有人能告诉我如何解决此问题,我将不胜感激。
答案 0 :(得分:0)
该故障强烈表明服务器B上的存储库已损坏。
首先在您不更新A
时它起作用的事实表明,更新A
会删除一些remote/A
引用,这些引用在本地存储库中保留了提交的良好副本。避免这种情况,您将保留必须从B收到的提交的良好副本,以便当您向B询问其提交时,您的Git会说:啊,我已经有了这些提交因此,您的Git不会向B的Git要求这些提交。如果B的理论(尚未证明,但有可能)损坏仅影响那些提交,那么避免要求这些提交也就避免了证明存在损坏。
如果B 上的存储库已损坏-您可以通过登录到B服务器并在有问题的存储库上使用git fsck
进行测试,则应将其替换为如果可能,在其他地方找到副本。