5

我有一个带有 ssh 服务器设置的 windows 2003 机器。我在本地和服务器上都安装了 msysgit(git 版本 1.6.2)。

服务器具有以下到我的存储库的绝对路径:

e:\vc\git\myrepo.git

当用户登录时,他/她将被放置在以下工作目录中:

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 在路径前加上“/”有关。我如何告诉 git 不要这样做?这应该工作吗?

注意: git-upload-pack 正在工作,因为我在路径中添加了 \gitinstallpath\libexec\git-core。显然这是一个错误,将来会修复,这是我的工作。

4

3 回答 3

6

我通过将 ssh 服务器从 winssh 切换到 openssh(通过 cygwin 层)解决了这个问题。我能够使用winsshd 很好地连接(如上所述),但是winsshd 没有正确处理以“/”为前缀的路径。我可能会让 winsshd 工作,但切换到 cygwin 和 openssh 更快。

如果您处于类似情况,这是一篇很好的博客文章,可以开始设置:

于 2009-07-07T23:57:12.617 回答
4

您是否尝试过以下操作?

git clone ssh://myuser@myip/myrepo testrepo

请注意从 SSH 路径末尾删除“.git”。如果远程目录名称有后缀,则只需要末尾的后缀。

另外,您是否尝试过任何其他 SSH URL 格式?要使用相对路径,您可以尝试:

git clone ssh://myuser@myip/~/myrepo testrepo

有关其他 URL 格式的详细信息,请参阅git clone 手册页

于 2009-07-07T15:12:06.067 回答
4

如果有人仍然对解决方法感兴趣:

问题是 - 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'  
于 2010-02-24T05:12:18.617 回答