我希望能够通过将我的工作桌面上存在的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的环境有关,但我真的无法弄清楚是什么。还有什么其他因素可能导致此错误?
答案 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路径:)