Ошибки клонирования HTTPS
При использовании HTTPS с GIT распространен ряд ошибок. Обычно они указывают на то, что у вас старая версия GIT или нет доступа к репозиторию.
Ниже приведен пример возможной ошибки HTTPS:
> error: The requested URL returned error: 401 while accessing
> https://HOSTNAME/USER/REPO.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://HOSTNAME/USER/REPO.git/info/refs
> fatal: HTTP request failed
> Error: https://HOSTNAME/USER/REPO.git/info/refs not found: did you run git
> update-server-info on the server?
Проверка версии GIT
Нет минимальной версии Git для взаимодействия GitHub, но мы обнаружили, что версия 1.7.10 — это комфортная и стабильная версия, доступная на многих платформах. Последнюю версию всегда можно скачать на веб-сайте GIT.
Проверка правильности удаленного репозитория
Репозиторий, который вы пытаетесь получить, должен существовать на ваш экземпляр GitHub Enterprise Server.
Чтобы узнать URL-адрес локального репозитория, можно открыть командную строку и ввести git remote -v:
$ git remote -v
# View existing remotes
> origin https://github.com/ghost/cocoareactive.git (fetch)
> origin https://github.com/ghost/cocoareactive.git (push)
$ git remote set-url origin https://github.com/ghost/ReactiveCocoa.git
# Change the 'origin' remote's URL
$ git remote -v
# Verify new remote URL
> origin https://github.com/ghost/ReactiveCocoa.git (fetch)
> origin https://github.com/ghost/ReactiveCocoa.git (push)
В качестве альтернативы вы можете изменить URL через наше GitHub Desktop приложение.
Предоставление маркера доступа
Чтобы получить доступ GitHub, необходимо аутентифицироваться с personal access token помощью a вместо пароля. Дополнительные сведения см. в разделе Управление личными маркерами доступа.
Проверить свои разрешения
При появлении запроса на ввод имени пользователя и пароля используйте учетную запись с доступом к репозиторию.
Совет
Если вы не хотите вводить учетные данные при каждом взаимодействии с удаленный репозиторий, можно включить кэширование учетных данных. Если кэширование учетных данных уже используется, убедитесь в том, что на компьютере кэшированы правильные учетные данные. Неправильные или устаревшие учетные данные не позволят пройти проверку подлинности.
Использование SSH
Если вы ранее настроили ключи SSH, можно использовать URL-адрес клонирования SSH вместо HTTPS. Дополнительные сведения см. в разделе Сведения об удаленных репозиториях.
Ошибка: репозиторий не найден
Если вы видите эту ошибку при клонировании репозитория, это значит, что репозиторий не существует, у вас нет разрешения на доступ к нему или ваш экземпляр GitHub Enterprise Server вы находитесь в приватном режиме. Существует несколько решений этой ошибки, в зависимости от причины.
Проверка правильности написания
Опечатки происходят. Если вы попытаетесь клонировать git@HOSTNAME:owner/repotile.git, но репозиторий на самом деле называется owner/repoti1e, произойдет эта ошибка.
Чтобы избежать этой ошибки, при клонировании всегда копируйте URL-адрес клона со страницы репозитория, а затем вставляйте его. Дополнительные сведения см. в разделе Клонирование репозитория.
Сведения об обновлении удаленного в существующем репозитории см. в разделе Управление удаленными репозиториями.
Проверка разрешений
Если вы пытаетесь клонировать частный репозиторий, но не имеете разрешения на его просмотр, произойдет эта ошибка.
Убедитесь в том, что у вас есть один из следующих уровней доступа:
- владелец репозитория;
- участник совместной работы над репозиторием;
- участник команды, которая имеет доступ к репозиторию (если репозиторий принадлежит организации).
Проверка доступа по протоколу SSH
В редких случаях может отсутствовать доступ к репозиторию по протоколу SSH из-за неправильной настройки.
Убедитесь, что SSH-ключ, который вы используете, привязан к вашему личному аккаунту на GitHub. Это можно проверить, введя в командную строку следующую команду:
$ ssh -T git@HOSTNAME
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.
Для получения дополнительной информации смотрите Добавление нового SSH-ключа в ваш GitHub аккаунт.
Проверка режима, в котором находится экземпляр
Если администратор сайта включил приватный режим на вашем экземпляре GitHub Enterprise, анонимные клоны над git:// будут отключены. Если вам не удается клонировать репозиторий, обратитесь к администратору сайта.
Проверка существования репозитория
Если ничего не помогает, убедитесь, что репозиторий действительно существует на ваш экземпляр GitHub Enterprise Server! Если вы пытаетесь выполнить отправку в несуществующий репозиторий, произойдет эта ошибка.
Ошибка: файл HEAD удаленного репозитория ссылается на несуществующую ветвь; не удалось выполнить извлечение
Эта ошибка возникает, если стандартная ветка репозитория была удалена на ваш экземпляр GitHub Enterprise Server.
Обнаружить эту ошибку легко: GIT предупредит вас при попытке клонировать репозиторий:
$ git clone https://HOSTNAME/USER/REPO.git
# Clone a repo
> Cloning into 'repo'...
> remote: Counting objects: 66179, done.
> remote: Compressing objects: 100% (15587/15587), done.
> remote: Total 66179 (delta 46985), reused 65596 (delta 46402)
> Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done.
> Resolving deltas: 100% (46985/46985), done.
> warning: remote HEAD refers to nonexistent ref, unable to checkout.
Чтобы исправить ошибку, вам нужно быть администратором репозитория на ваш экземпляр GitHub Enterprise Server. Вам потребуется изменить ветвь по умолчанию репозитория.
После этого можно получить список всех доступных ветвей из командной строки:
$ git branch -a
# Lists ALL the branches
> remotes/origin/awesome
> remotes/origin/more-work
> remotes/origin/new-main
Затем можно просто переключиться на новую ветвь:
$ git checkout new-main
# Create and checkout a tracking branch
> Branch new-main set up to track remote branch new-main from origin.
> Switched to a new branch 'new-main'