无法在网络驱动器上克隆GIT代码库

10

在使用Windows 7期间,我们在网络驱动器上设置了一个裸的GIT仓库,以便多个用户可以从中pull/push。我能够在本地和其他多个网络驱动器上创建一个新的工作仓库。然而,当我尝试克隆同一网络驱动器上的另一个工作仓库(不同文件夹)时,克隆失败。

使用TortoiseGIT,在右键单击并选择“GIT Clone”后,输入所有必要的路径到我的裸仓库(新的工作仓库已经填好), 然后点击ok,我遇到以下错误:

Cloning into 'R:\path\to\new\repo'... done. 
error: refs/remotes/origin/master does not point to a valid object! 
error: Trying to write ref refs/heads/master with nonexistent object 5d2164db2c61efc7a5598f6ff75ed3fbbb12456e 
fatal: Cannot update the ref 'HEAD'. 
fatal: The remote end hung up unexpectedly git did not exit cleanly (exit code 128)

它无法创建仓库。但是它确实建立了新文件夹和“.git”子文件夹结构。

这不是r/w权限问题,因为我可以r/w任何其他文件,但似乎无法创建这个新克隆的仓库。我的同事也不能。即使我去网络驱动器上的另一个文件夹,我仍然无法成功克隆仓库。令人惊讶的是,如果我只是复制/粘贴我在另一个位置创建的仓库,然后手动执行“pull”,它就能正常工作并成功更新。

有什么建议可以尝试吗?显然,我已经搜索过“exit code 128”和“cannot update the ref 'HEAD'”,但找不到解决方案。可能我们正在忽略一些非常简单的东西,但我们刚刚开始使用GIT,并且这真的让我们头痛...

更新: 我刚刚注意到,当我从GIT手动拉取到我的“副本”时,它正在执行快速转发。也许这提供了一些额外的线索?

From R:/path/to/repo
* branch            master     -> FETCH_HEAD
Updating 5d2164d..d75bdb7
Fast-forward
Files.py |    3 +++
1 file changed, 3 insertions(+)
Success

这似乎是您尝试克隆的存储库已损坏。那么错误消息中给出的ref id是什么?它是正确的HEAD吗?它是否存在? - Chronial
@Chronial,我该如何确定HEAD中的ref id是正确的?就像我说的,我真的很新手。谢谢你的建议! - RyanKDalton
在主仓库中运行 git log 5d2164db2c61efc7a5598f6ff75ed3fbbb12456e,看看是否失败。但如果你可以将其克隆到另一个目录,则可能是正确的。 - Chronial
2个回答

9

Git可能在尝试使用硬链接进行一些智能的操作,但在网络驱动器上失败了。尝试使用git clone --no-hardlinks /r/path/to/my/repogit clone file:///r/path/to/my/repo


-2
请通过msysgit命令行完成此操作。
git clone /r/path/to/my/repo /r/some/other/path

此外,我建议您使用命令行中的 git,因为它是专门设计用于命令行的工具。这样,您将能够更快地找到更多帮助,并解决任何遇到的问题。

这与TortoiseGIT运行的相同,只是从命令行运行。返回的错误消息(如我原来的问题所示)完全相同。它并没有解决“不存在的对象”的固有问题。 - RyanKDalton
有趣。使用 file:/// 协议代替路径怎么样?你只需要在第一个路径处使用它。 - Adam Dymitruk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接