首页 > 解决方案 > 如何修复 git-lfs 服务器(gitlab)上损坏的文件?

问题描述

我们正在使用启用了 git-lfs (v.2.4.2) 的 GitLab 11.2.1-ee。
我们发现我们在服务器上的 git-lfs 中有损坏的对象。当我们跑

sudo gitlab-rake gitlab:lfs:check VERBOSE=1 

, 我们有

- 1401..1600: Failures: 1
  - LFS object: b675b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491: Checksum mismatch

现在,当我们尝试 git lfs pull克隆时,我们得到了

Expected OID b675b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491, got 2c6abc2c4d29bd1c7f0041160ea15ea2765df10194a6e9ef3e6e2139c11fc67f after 12427595 bytes written
error: failed to fetch some objects from 'https://192.168.1.100/root/our_project.git/info/lfs'

我们应该如何修复这种腐败?

标签: gitgitlabcorruptiongit-lfs

解决方案


解决了。

我们发现b6/75/b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491服务器上文件内容的sha256sum等于2c6abc2c4d29bd1c7f0041160ea15ea2765df10194a6e9ef3e6e2139c11fc67f(这似乎是不正确的),并且repo克隆上相同文件的内容是正确的(等于b675b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491)。我们将b6/75/b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491服务器上的文件内容替换为来自 repo 克隆的该文件的内容,现在一切正常。我们现在可以在新克隆中进行拉、推和更改分支,而不会出现任何错误。

为了在 xubuntu 上获得 sha256,我们使用了

cat b6/75/b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491 | sha256sum

在 Mac 上:

shasum -a 256 b6/75/b675b00828707cd53dc5c130efce8a9d352e5efd8b9b29f06808810b6ebb5491

推荐阅读