我在Windows 10系统上设置了Win32-OpenSSH,我正在使用Git for Windows 2.16.1。 我已经创建了一个裸测试存储库,我可以通过文件URL从中轻松克隆:
git clone file:///c:/test.git
Cloning into 'test'...
remote: Counting objects: 33, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 33 (delta 11), reused 0 (delta 0)
Receiving objects: 100% (33/33), done.
Resolving deltas: 100% (11/11), done.
SSHD运行正常,我可以从我的平板电脑打开一个shell,并通过SFTP访问存储库目录:
> sftp oli@localhost
oli@localhost's password:
Connected to oli@localhost.
sftp> pwd
Remote working directory: /C:/Users/Oli
sftp> cd /c:/test.git
sftp> pwd
Remote working directory: /c:/test.git
sftp> ls
HEAD config description hooks info objects packed-refs refs
sftp> bye
但是由于某种原因,通过SSH克隆失败了:
> git clone ssh://oli@localhost:22/c:/test.git
Cloning into 'test'...
oli@localhost's password:
fatal: ''/c:/test.git'' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
用户“Oli”肯定拥有正确的访问权限,我们上面已经看到存储库存在并且是一个有效的Git存储库。我还在路径上尝试了许多不同的语法变体 我已经在Git / SSH / Windows,Git Pro书籍,Git参考书,OpenSSH手册和Win32-OpenSSH维基上阅读了每一个Q / A.
我错过了什么?
答案 0 :(得分:2)
Konstantin this question已对此进行了解答(感谢您的链接,Aurel):
问题是 - cmd.exe不理解单引号参数。
Git将路径传递到用单引号括起来的存储库,这在cmd.exe中不起作用 如果你看得足够近,实际上可以在上面的Git错误消息中看到:
fatal: ''/c:/test.git'' does not appear to be a git repository
所以我已经设置了Konstantin建议的解决方法:
git-upload-pack.exe $*
resp。 git-receive-pack.exe $*
git config remote.origin.uploadpack 'sh gup.sh'
和git config remote.origin.receivepack 'sh grp.sh'
......它有效。
可悲的是,康斯坦丁的答案不是被接受的答案,也是最不受欢迎的答案。所以,如果这对你有所帮助,也可以回答他的答案!