'X'似乎不是一个git存储库(我确定路径是正确的)

时间:2011-04-20 14:13:13

标签: git cygwin msysgit openssh

我希望能够通过将我的工作桌面上存在的git存储库克隆到我的笔记本电脑来在家工作。两个系统都在cygwin shell中运行msysgit。两个系统都在使用cygwin的ssh。

如果我ssh到该服务器,我可以在路径/ cygdrive / d / Projects / TheProject看到存储库

$ ssh TheDesktop
MyUser@TheDesktop's password: ...I enter the password, see the MOTD, and I'm in...
$ cd /cygdrive/d/Projects/TheProject
...See the git repository here.  Even see the current branch in the prompt...

但我尝试克隆并失败:

$ git clone ssh://TheDesktop/cygdrive/d/Projects/TheProject
Cloning into TheProject
MyUser@TheDesktop's password: ...I enter the password...
fatal: '/cygdrive/d/Projects/TheProject' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我还尝试将存储库符号链接到我的主文件夹:

$ ssh TheDesktop
MyUser@TheDesktop's password: ...I enter the password...
$ ln -s /cygdrive/d/Projects/TheProject .
$ exit

$ git clone ssh://TheDesktop/~/TheProject
Cloning into TheProject
MyUser@TheDesktop's password: ...I enter the password...
fatal: '/cygdrive/d/Projects/TheProject' does not appear to be a git repository
fatal: The remote end hung up unexpectedly   

我在这里的很多问题中肯定会看到这个错误,而且它们几乎总是与糟糕的道路相关。但我确信我的道路是正确的。我觉得它与桌面上ssh'd的环境有关,但我真的无法弄清楚是什么。还有什么其他因素可能导致此错误?

3 个答案:

答案 0 :(得分:4)

git clone TheDesktop:cygdrive/d/Projects/TheProject TheProject

应该解决它

如果ssh服务器不在cygwin下,请替换windows路径:

cygpath --mixed /cygdrive/d/Projects/TheProject

根据我的经验,cygwin将错误的路径样式传递给msysgit。 Msysgit不理解/ cygdrive,因此在命令行上使用单个参数搞砸了之外,在这种情况下,cygwin bash似乎神奇地进行了转换。

然而,gitshell对cygwin sshd没有这样的事情。我假设你尝试了接近

的东西
git clone TheDesktop:D:/Projects/TheProject TheProject

如果这不起作用,我会看

git daemon # wasn't supported on Windows last time I checked

git bundle create repo.bundle --all

# receive it on the remote
scp TheDesktop:repo.bundle
git clone repo.bundle TheProject

答案 1 :(得分:1)

您需要克隆存储库本身,而不是关联的工作树:

$ git clone ssh://TheDesktop/cygdrive/d/Projects/TheProject/.git TheProject

应该有效

答案 2 :(得分:0)

可能与git想要找到相对于您的登录文件夹的“cygdrive / d / Projects / TheProject”。

在你的第一个例子中,你通过ssh登录,然后执行“cd / cygdrive / ...”,这是一个绝对路径,而不是相对路径。

将ssh登录文件夹更改为指向例如Projects-文件夹可能会帮助你。并缩短你的ssh路径:)