Как мне сделать клон Git с компьютера Windows по SSH? - PullRequest
0 голосов
/ 18 декабря 2018

Я могу сделать ssh windowsmachine из Linux для доступа к машине с Windows, и оттуда я могу git init --bare foo.git, сообщая мне Initialized empty Git repository in C:/Users/unhammer/foo.git/

, но как мне клонировать это со стороны Unix?

$ git clone ssh://windowsmachine:foo.git
Cloning into 'foo'...
fatal: No path specified. See 'man git-pull' for valid url syntax

$ git clone ssh://windowsmachine:C:\\Users\\unhammer\\foo.git
Cloning into '\Users\unhammer\foo'...
fatal: No path specified. See 'man git-pull' for valid url syntax

$ git clone ssh://windowsmachine:/foo.git
Cloning into 'foo'...
fatal: ''/foo.git'' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

и аналогичные сообщения для /C:/Users/unhammer/foo.git и /C/Users/unhammer/foo.git и /Users/unhammer/foo.git.

Обратите внимание на двойные одинарные кавычки:

fatal: ''/Users/unhammer/foo.git'' does not appear to be a git repository

Этого не происходиткогда я пытаюсь git clone linuxmachine:/some/path/that/does/not/exist.git, тогда git использует одинарные кавычки.(Может быть, это проблема, git-for-windows или что-то, использующее дополнительные кавычки?)

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Самое простое решение - изменить оболочку Windows OpenSSH по умолчанию на bash .Это можно легко сделать с помощью powershell на компьютере с Windows:

powershell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\bash.exe" -PropertyType String -Force

Возможно, вам придется перезапустить OpenSSH на компьютере с Windows и / или уничтожить существующие ssh-подключения от клиента, прежде чем он вступит в силу.Теперь вы можете клонировать без дополнительной опции -u:

git clone ssh://windowsmachine/c/Users/unhammer/foo.git

(и, если вы ранее указали uploadpack / receivepack, удалите их из .git / config)

0 голосов
/ 19 декабря 2018

После ссылки @ phd на https://stackoverflow.com/a/8050564/7976758 я нашел ссылку на https://stackoverflow.com/a/2323826/69663 с обходным путем к проблеме цитирования.Вот что я сделал:

В Windows откройте Git Bash и в моем домашнем каталоге:

echo 'git-receive-pack "$@"' >grp.sh
echo 'git-upload-pack "$@"' >gup.sh

В Linux клон, указывающий upload-pack:

git clone -u '"C:/Program Files/Git/bin/bash.exe" gup.sh' ssh://windowsmachine/c/Users/unhammer/foo.git
cd foo
git config remote.origin.uploadpack '"C:\Program Files\Git\bin\bash.exe" gup.sh'
git config remote.origin.receivepack '"C:\Program Files\Git\bin\bash.exe" grp.sh'

Таким образом, путь репо - это тот, который показывает Git Bash (/c/Users/$username/$repo), нигде нет двоеточия.


https://github.com/PowerShell/Win32-OpenSSH/issues/1082 кажется связанным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...