Я пытаюсь получить доступ к удаленному репозиторию 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. Надеюсь, это кому-то поможет.