Назад | Перейти на главную страницу

Правильный синтаксис Git clone для SSH

Я пытаюсь получить доступ к удаленному репозиторию git с помощью SSH, но получаю фатальную ошибку - есть ли проблема с моим синтаксисом?

Я создал репозиторий git в папке mysite на моем сервере, поэтому репо находится в /home/mysite/.git

git clone ssh://root@serverIP/mysite/.git
fatal: could not create work tree dir 'mysite'.: Permission denied

Может ли кто-нибудь увидеть, что не так с моим синтаксисом или здесь есть еще одна проблема?

Попробуйте использовать полный путь для целевого каталога. Например:

git clone ssh://root@serverIP/mysite/.git /home/user_name/mysite

UPD:

Когда git клонирует репо, он создает для него каталог на основе имени репо.

git clone git@example.com:username/repo.git

Git создаст каталог repo. Но в вашем случае НЕТ имени репо mysite/.git.

Вы должны указать ssh весь путь к вашему репо, и часть git не нужна, git может определить это самостоятельно:

git clone ssh://root@serverIP/home/mysite 

Отредактировано: при использовании синтаксиса типа URL ssh: // двоеточие, которое я использовал ранее, недействительно. Есть еще один синтаксис (стиль ssh), которому он нужен:

 git clone root@serverIP:/home/mysite 

Я обычно предпочитаю вторую форму.

Действительный URL-адрес ssh должен выглядеть так ssh://{user}@host.xz/path/to/repo.git, так что все будет в порядке (если (mysite/.git допустимый путь).

Проблема должна быть на локальной стороне: есть ли у вас права на запись в текущий каталог?


Если у вас есть доступ на запись, у вас все еще есть два сообщения:

  • stdin: is not a tty: это означает, что что-то в вашем .bashrc или в глобальном .bashrc ожидает ввода: см. ее например:

Есть строчка (mesg y) внутри глобального файла bashrc, который будет вызывать повторяющиеся сообщения при взаимодействии с GIT (stdin: is not a tty)

Это не помешало бы созданию клона.

  • warning: You appear to have cloned an empty repository: это предупреждение не зависит от предыдущего сообщения и должно быть точным, если репо, которое вы клонируете, действительно пустое.

Для меня проблема заключалась в доступе на запись в каталог, и я исправил это с помощью «sudo». Мне пришлось создать псевдоним в моем профиле bash, который сокращал бы команду sudo перед командой git.

Ниже приведена строка, которую я добавил в свой файл .profile, и она отлично работает. У меня больше нет сообщения «фатальный: не удалось создать каталог рабочего дерева ...».

alias sgit="sudo /usr/local/git/bin/git"

 

ОБНОВИТЬ

Я заговорил слишком рано. Это вызывало другие проблемы с программами на моем Mac для сохранения файлов в каталоге, поскольку каталог принадлежал пользователю root. Мне пришлось изменить корневой каталог на мою учетную запись пользователя (которая также является администратором). Это, в свою очередь, сделало мой псевдоним «sudo git» бесполезным, поскольку теперь я могу просто использовать git без sudo. Надеюсь, это кому-то поможет.