git clone 在虚拟机中的 msys2 下失败,并显示“坏对象”

git clone 在虚拟机中的 msys2 下失败,并显示“坏对象”

当我尝试在git clone我的 Github 上创建一个项目时Windows 7——MSYS2VirtualBox VM,失败:

laurent@Win7 ~/Dev
$ LANG="en" GIT_TRACE="1" git clone git://github.com/nanomsg/nanomsg.git
trace: built-in: git 'clone' 'git://github.com/nanomsg/nanomsg.git'
Cloning into 'nanomsg'...
trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected'
remote: Reusing existing pack: 10643, done.
trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected'
trace: built-in: git 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 9412 on Win7' '--check-self-contained-and-connected'
remote: Total 10643 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10643/10643), 5.60 MiB | 244.00 KiB/s, done.
Checking connectivity... trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
fatal: bad object e07b5841092eb3bd3b97188f09819511afc6cbed
fatal: remote did not send all necessary objects

但是,在我的 Gentoo 主机下它可以工作:

laurent@Gentoo ~/Documents/tmp $ LANG="en" GIT_TRACE="1" git clone git://github.com/nanomsg/nanomsg.git
trace: built-in: git 'clone' 'git://github.com/nanomsg/nanomsg.git'
Cloning into 'nanomsg'...
trace: run_command: 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo'
trace: exec: 'git' 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo'
trace: built-in: git 'index-pack' '--stdin' '-v' '--fix-thin' '--keep=fetch-pack 24970 on Gentoo'
remote: Reusing existing pack: 10643, done.
remote: Total 10643 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10643/10643), 5.60 MiB | 243.00 KiB/s, done.
Resolving deltas: 100% (6433/6433), done.
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
Checking connectivity... trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
done

我尝试了几次,结果都一样。我尝试克隆另一个项目,结果也一样。我认为在虚拟机中不是问题。经过一番研究,这可能是由于 Linux 和 Windows 之间关于 Windows 附加 CR 的文本/二进制差异造成的。但我还没有找到解决方案。

供参考,我在 MSYS2 中使用其包管理器 pacman 安装了 git。在 MSYS(2) 下安装 git 应该没问题吧?或者我必须安装系统管理工具反而 ?

答案1

dtech 的解决方案有效:使用系统管理工具,”Git 的 Windows 官方版本“。

缺点是 msysgit 使用自己的 MSYS 层。安装程序不建议与现有的 MSYS 设置集成。存在一个项目这里旨在提供此类集成,但从其 TODO 列表来看,似乎所有 Git 自动测试均未通过。它是预发布的 v0.2。

相关内容