Git error: remote unpack failed when pushing to a bare repo

Git error: remote unpack failed when pushing to a bare repo

我在将本地 SugarCRM 实例从 gitlab 存储库切换到新的 github 存储库时遇到问题。在本地,该项目位于 Windows 10 主机上的 vagrant VM 运行ning 上。我从主机发出 运行 git 命令。我创建了一个新的私有 github 存储库,将其设置为新的远程,并在主机上的 C:\Users\.ssh 中生成了一个新的 public/private ssh 密钥对。当我第一次尝试将项目推送到远程仓库时,我得到

Enumerating objects: 58649, done.
error: remote unpack failed: eof before pack header was fully read
error: failed to push some refs to 'git@github.com:yvoloshin-fidelus/Sugar.git'

image 显示了我从 Github 桌面获得的更详细的错误消息。

在关注 时,我尝试了

git gc --aggressive --prune=now

得到这个:

fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack 

其他 git 我用它们的输出尝试过的命令:

git count-objects -vH

warning: garbage found: .git/objects/pack/tmp_pack_2dy4gc
warning: garbage found: .git/objects/pack/tmp_pack_tnF02a
warning: garbage found: .git/objects/pack/tmp_pack_XY7JBa
count: 4904
size: 10.77 MiB
in-pack: 68200
packs: 4
size-pack: 1.15 GiB
prune-packable: 0
garbage: 3
size-garbage: 1.32 GiB

git gc --aggressive --no-prune

Enumerating objects: 65624, done.
error: failed to run repack25/65624)

这些命令对原始错误没有影响。 我还应该在这里尝试什么?

EDIT/UPDATE: OP 的真正诀窍是 git update-git-for-windows。详情见评论!

在这种情况下我会尝试的事情:

  • 确保我当前的用户拥有所有当前 git 内部文件,因为缺少权限会干扰各种 git 操作。
    • Linux: sudo chown -R --changes "$USER" .git
    • Windows:打开主文件夹权限并通过 Advanced Security Settings 对话框降低权限(使用 ☑ Replace all child object permissions with inheritable permissions from this object
  • 关于 Windows:确保路径不长,因为如果路径超过 255 chars/bytes,Windows 文件系统 NTFS 将混乱 git。请记住,仅常规 git 对象路径(例如 .git/objects/fe/73f087d8c25fbc1159a50434ef9bf15773e7ac)的长度为 55 个字符。此外,特殊的 unicode 字符可以占用超过 1 个字节的文件路径。此外,回购中超过最大路径长度的文件对于某些操作可能会出现问题。在最坏的情况下,只需将回购移动到例如C:\repo\ 或类似长度的内容并在那里尝试。
  • 如果即使失败并且回购似乎完全损坏,我会尝试通过在本地克隆它来清理回购 git clone ./repo newrepo 并从新的回购克隆中重试推送

发生这种情况可能有以下几个原因:

  1. 您没有足够的权限推送目标仓库
  2. 您的 git 头部已损坏 - 为此您可以重新设置 git 头部
  3. 或者创建一个新分支并从上游存储库克隆并将更改推送到新分支 - 这对我有用,因为我没有 AWS 的权限。

我有一个错误: “远程解压失败 - 未知提交 6879900878 错误:无法将某些引用推送到“https:/git-codecommit.ap-south.amazonaws.com/[REPO PATH]”