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
并从新的回购克隆中重试推送
发生这种情况可能有以下几个原因:
- 您没有足够的权限推送目标仓库
- 您的 git 头部已损坏 - 为此您可以重新设置 git 头部
- 或者创建一个新分支并从上游存储库克隆并将更改推送到新分支 - 这对我有用,因为我没有 AWS 的权限。
我有一个错误:
“远程解压失败 - 未知提交 6879900878
错误:无法将某些引用推送到“https:/git-codecommit.ap-south.amazonaws.com/[REPO PATH]”
我在将本地 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
)
- Linux:
- 关于 Windows:确保路径不长,因为如果路径超过 255 chars/bytes,Windows 文件系统 NTFS 将混乱 git。请记住,仅常规 git 对象路径(例如
.git/objects/fe/73f087d8c25fbc1159a50434ef9bf15773e7ac
)的长度为 55 个字符。此外,特殊的 unicode 字符可以占用超过 1 个字节的文件路径。此外,回购中超过最大路径长度的文件对于某些操作可能会出现问题。在最坏的情况下,只需将回购移动到例如C:\repo\
或类似长度的内容并在那里尝试。 - 如果即使失败并且回购似乎完全损坏,我会尝试通过在本地克隆它来清理回购
git clone ./repo newrepo
并从新的回购克隆中重试推送
发生这种情况可能有以下几个原因:
- 您没有足够的权限推送目标仓库
- 您的 git 头部已损坏 - 为此您可以重新设置 git 头部
- 或者创建一个新分支并从上游存储库克隆并将更改推送到新分支 - 这对我有用,因为我没有 AWS 的权限。
我有一个错误: “远程解压失败 - 未知提交 6879900878 错误:无法将某些引用推送到“https:/git-codecommit.ap-south.amazonaws.com/[REPO PATH]”