我有一个ssh服务器安装程序的Windows 2003框。 我有msysgit(git版本1.6.2)安装在本地和服务器上。
服务器有以下我的回购的绝对path:
e:\vc\git\myrepo.git
当用户login时,他/她将被放在以下工作目录中:
e:\vc\git\
在我的开发机器上运行以下cmd时:
git clone ssh://myuser@myip/myrepo.git testrepo
我得到以下错误:
fatal: ''/myrepo.git'' does not appear to be a git repository
根据我的SSH日志,似乎git正在服务器上执行此cmd:
'cmd.exe /c git-upload-pack '/myrepo.git''
在本地执行该命令(在服务器上)出于同样的原因失败。 我在想这个问题是与git前缀的path与“/”有关。 我该如何告诉git不要这样做? 这应该工作吗?
注意:git-upload-pack正在工作,因为我将\ gitinstallpath \ libexec \ git-core添加到path中。 显然这是一个错误,将来会修复,这是我的工作。
我解决了这个问题,把我的ssh服务器从winssh切换到openssh(通过cygwin层)。 我能够使用winsshd连接正常(如上所述),但winsshd没有正确处理前缀为“/”的路径。 我可能可以winsshd工作,但切换到cygwin和openssh更快。
这里有一个很好的博客文章来启动设置,如果你在类似的情况:
你有没有尝试过以下?
git clone ssh://myuser@myip/myrepo testrepo
请注意从SSH路径末尾删除“.git”。 如果远程目录名具有该名称,则只需在该末尾添加该后缀即可。
另外,你有没有尝试过任何其他的SSH网址格式? 要使用相对路径,可以尝试:
git clone ssh://myuser@myip/~/myrepo testrepo
有关其他URL格式的详细信息,请参阅git克隆手册页 。
如果有人仍对解决方法感兴趣:
问题是 – cmd.exe不理解单引号参数。 所以我们用sh代替。
用行创建文件gup.sh
git-upload-pack.exe $ *
和grp.sh
git-receive-pack.exe $ *
在服务器上!
然后运行:
git clone -u'sh gup.sh'ssh://myuser@myip/e/vc/git/myrepo.git testrepo git config remote.origin.uploadpack'sh gup.sh' git config remote.origin.receivepack'sh grp.sh'