'X' не похоже на репозиторий git (я уверен, что путь правильный)


Я хочу иметь возможность работать из дома, клонируя репозиторий git, который существует на моем рабочем столе, на мой ноутбук. Обе системы работают под управлением msysgit в оболочке cygwin. Обе системы используют ssh cygwin.

Если я подключусь по 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 был встроен на рабочем столе, но я действительно не могу понять, что именно. Какие еще вещи могут вызвать эту ошибку?

3 4

3 ответа:

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

Вам нужно клонировать сам репозиторий, а не связанное с ним рабочее дерево:

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

Должно работать

Это может быть связано с тем, что git хочет найти "cygdrive/d/Projects/TheProject" относительно вашей папки входа.

В первом примере вы входите через ssh, а затем делаете " cd / cygdrive/...", что является абсолютным путем, а не относительным.

Изменение папки входа ssh, чтобы указать, например, на папку проектов, может помочь вам. А также сократить путь ssh:)