git clone gituser@<server>:myRepo.git
不起作用,失败并显示错误消息:
fatal: ''myRepo.git'' does not appear to be a git repository
背景:
我们有一台安装了 Git Bash 和 Bitvise WinSSHd(在 上C:
)的 Windows 7 机器。SSH 服务器设置为用作<git dir>/bin/sh.exe --login
shell,主目录设置为/a/
。我可以通过 SSH 顺利连接到服务器,它会按预期将我带入 Git Bash shell,从 目录开始/a/
。
/a/myRepo.git
我在磁盘上有一个裸存储库A:
,只要我们在本地进行操作,它就可以完成所有工作。我可以git clone /a/myRepo.git
对其进行操作、推送和拉取,只要它是本地的(或通过 SSH 进行“本地”操作),就没有问题。此外,我们将 A: 磁盘设置为共享文件夹,我可以使用从本地网络计算机克隆、推送和拉取\\<server>\myRepo.git
。
但是,当我尝试远程克隆时,我无法弄清楚哪些选项组合可以使其工作:明显的克隆字符串不起作用,将绝对路径名置于 *nix 转换格式(/a/myRepo.git
和A:/myRepo.git
)或 Windows 格式(A:\\myRepo.git
)中都会失败并出现相同的错误,目录上的权限设置为允许所有用户,并且我git config core.sharedRepository all
也在服务机器上进行了设置。
我怀疑 Git Bash 将 Windows 驱动器号重新映射到/<letter>
格式,但我尝试在 C: 上创建另一个裸存储库,它给了我相同的错误消息。
答案1
- 了解 Git 支持的协议和 URL 格式
- 使用正确、无歧义的解释存储库的 URL:使用 SSH 和 URLS 时似乎与 SSH 一样,它更像 SCP 格式。即 - 路径部分的起点不是 $HOME,而是 ssh 服务器的根目录
我希望ssh://gituser@<server>/~/myRepo.git
能够工作(正式地,除了一些可能与 ssh 无关的其他问题)