#Как выглядит неисправность
После переноса каталога с проектом команда git fetch или push выдаёт «origin does not appear to be a git repository» либо «No configured push destination». Параметр origin — это локальная настройка внутри .git/config.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Скопированы файлы без .gitПри переносе не попала скрытая папка .git | git status пишет not a git repository | Восстановить исходный клон или заново клонировать |
| Удалён адрес remote originИстория сохранена, но git remote -v пуст | git status работает, а remote отсутствует | Добавить правильный удалённый адрес |
#Пошаговое устранение
- 1. Проверьте, сохранилась ли история GitОткройте терминал в перенесённом каталоге, выполните git rev-parse --show-toplevel и git status. Если .git отсутствует, не делайте git init поверх архива с надеждой восстановить историю: лучше вернуть .git из резервной копии либо клонировать проект заново.
- Показывает наличие локального репозитория, без измененийLinux · Терминал (Bash)КомандаПоказывает наличие локального репозитория, без изменений.
git rev-parse --show-toplevelgit status
- 2. Проверьте доступные серверыВыполните git remote -v. Если origin показан, проверьте опечатку и правильность пути на сервере. Если origin отсутствует, откройте страницу своего проекта в GitHub/GitLab/другом хостинге и скопируйте официальный адрес Clone.
- Показывает адреса fetch/push; не меняет настройкиLinux · Терминал (Bash)КомандаПоказывает адреса fetch/push; не меняет настройки.
git remote -v
- 3. Сверьте протокол доступаДля SSH проверьте, настроен ли ключ аккаунта; для HTTPS используйте штатный менеджер учётных данных. Не копируйте чужой URL из случайного руководства. Убедитесь, что у вас есть права на этот удалённый репозиторий.
- 4. Добавьте отсутствующий originИз корня локального репозитория, только после проверки адреса, выполните git remote add origin URL_РЕПОЗИТОРИЯ. URL_РЕПОЗИТОРИЯ — заменяемый образец, не выполняйте его буквально. Если origin уже существует, используйте git remote set-url origin с правильным URL и запишите старый адрес перед изменением.
- Меняет только локальные настройки remoteLinux · Терминал (Bash)С осторожностьюМеняет только локальные настройки remote. Не подставляйте токен в адрес.
git remote add origin URL_РЕПОЗИТОРИЯgit remote -vКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 5. Проверьте чтение без отправки измененийВыполните git ls-remote origin HEAD. Ожидается идентификатор коммита и HEAD, если соединение доступно. При ошибке Permission denied проверьте SSH-ключ/учётные данные, при repository not found — название и права, при тайм-ауте — сеть.
- Запрос только на чтение к серверуLinux · Терминал (Bash)КомандаЗапрос только на чтение к серверу.
git ls-remote origin HEAD
- 6. Не отправляйте новую ветку вслепуюПроверьте git branch -vv, git fetch origin и git log --oneline --all -10. Лишь после сравнения истории настраивайте upstream через git push -u origin имя-ветки при необходимости; при расхождении веток остановитесь и согласуйте объединение.
- Первая команда читает состояние; fetch получает объекты, не меняя рабочую веткуLinux · Терминал (Bash)КомандаПервая команда читает состояние; fetch получает объекты, не меняя рабочую ветку.
git branch -vvgit fetch origin
#Как проверить результат
Успех: git remote -v показывает верный адрес, git ls-remote origin HEAD успешно отвечает, история локального проекта соответствует выбранному удалённому репозиторию.
#Если проблема осталась
Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.