#Что означает ошибка
fatal: not a git repository (or any of the parent directories): .git
Git определяет репозиторий по наличию каталога .git в текущей папке или в родительских. Если его нет, любая команда (git status, git add) выдаёт fatal: not a git repository (or any of the parent directories): .git. Ошибка не означает повреждения: чаще всего вы просто находитесь не в той папке или проект не инициализирован.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Неверная папкаКоманда выполнена вне проекта. | pwd показывает не корень проекта. | Перейдите в нужную папку. |
Репозиторий не созданВ проекте нет .git. | Папка скачана как архив. | Для нового проекта git init, для существующего git clone; не создавайте новую историю поверх старой. |
Каталог .git удалён или скрыт.git удалён вручную. | Не видно скрытых файлов. | Восстановите из копии. |
| Права или safe.directoryВладелец папки отличается от пользователя. | Сообщение «dubious ownership». | Проверьте владельца; добавляйте только точный доверенный путь по необходимости. |
#Пошаговое решение
- Проверьте текущую папкуОткройте терминал там, где вы вводите
git status: в VS Code выберите «Терминал → Создать терминал», в PowerShell можно открыть «Пуск → Терминал». Узнайте текущий каталог: PowerShell —Get-Location, Linux/macOS —pwd. Если путь отличается от папки вашего проекта, перейдите черезcd "ПУТЬ_ПРОЕКТА", заменив пример полным реальным путём. После перехода выполнитеgit rev-parse --show-toplevel: если команда вернула путь, вы внутри существующего репозитория; если повторяет ошибку, ищите рабочую папку проекта. - Проверьте наличие .gitВ папке проекта проверьте скрытый объект
.git: Windows PowerShell —Get-ChildItem -Force, Linux/macOS —ls -la. Обычно это каталог метаданных, но в рабочих деревьях и подмодулях.gitможет быть файлом со ссылкой на реальное хранилище, поэтому не требуйте наличия только каталога. Если объект есть, выполнитеgit statusи убедитесь, что Git видит ветку. Не удаляйте.git, не создавайте поверх него новый репозиторий: так можно потерять историю и настройки удалённых адресов. - Перейдите в корень проектаЕсли
.gitне найден, перейдите на один уровень выше с помощьюcd ..и вновь проверьте наличие репозитория; исходники могли находиться во вложенной папке. Проводник Windows и Finder по умолчанию скрывают некоторые файлы, поэтому ориентируйтесь на вывод терминала. Когда найдёте правильный корень, запомните этот путь и открывайте редактор из него. Если проект был скачан ZIP с GitHub, скрытых метаданных Git в архиве обычно нет — переходите к клонированию, если нужна история. - Инициализируйте репозиторийКоманда
git initподходит только для нового проекта, историю которого вы собираетесь начать локально. Сначала убедитесь, что это не копия существующего репозитория и что есть резервная копия исходников. В корне проекта выполнитеgit init, затемgit status; Git создаст.gitи покажет ветку и неотслеживаемые файлы. Не запускайтеgit add .иgit commitавтоматически: перед добавлением нужно проверить.gitignore, секреты и большие файлы. Если ожидали старые коммиты, остановитесь и найдите оригинальный репозиторий вместо создания нового. - Либо клонируйтеЕсли проект размещён на GitHub/GitLab, откройте страницу репозитория и скопируйте проверенный URL через «Code/Код → HTTPS» или соответствующую кнопку. Перейдите в родительский каталог и выполните
git clone URL, заменив URL полученным адресом; команда создаст новую папку, не изменяя вашу текущую копию. Перейдите в неё, выполнитеgit statusиgit remote -v. При отсутствии прав авторизуйтесь штатным способом (ключ SSH или поддерживаемая учётная запись); не публикуйте пароли и ключи в чате. - Подключите удалённый репозиторийЕсли вы уже создали локальный репозиторий и по инструкции разработчика должны связать его с удалённым, сначала выполните
git remote -v. Когда нужного адреса нет, используйтеgit remote add origin URL; еслиoriginуже существует, проверьте его назначение прежде, чем менять. Эта операция добавляет настройку адреса, но не загружает код и не объединяет истории. Не используйтеgit push --forceи не удаляйте чужие ветки ради исправления «not a repository»; при ошибке аутентификации сначала проверяйте доступ. - Разрешите папкуЕсли Git сообщает
detected dubious ownership, это другая ошибка. Уточните владельца папки и способ получения проекта; на общем сервере не доверяйте произвольным каталогам. При подтверждённо доверенном пути разработчик/администратор может задать точечное разрешениеgit config --global --add safe.directory /полный/путь, но не используйтеsafe.directory '*'. После этого запуститеgit status. Если же исходное сообщение именноnot a git repository, настройка владельца не создаст метаданные.git. - Проверьте вложенностьДля репозиториев с подмодулями проверьте
git rev-parse --show-toplevelв нужной рабочей папке и просмотрите.gitmodules, если он есть. Подмодуль может содержать файл.git, а не каталог — это штатно. Если проект является рабочим деревом (git worktree), удаление метаданных одного каталога может повредить другие. После определения корня проверьтеgit statusиgit log -1 --oneline; при сохранении ошибки сообщите коллегам выводpwd/Get-Location,git statusи сведения о происхождении проекта без секретов. - Дополнительная команда по темеLinux · Терминал (Bash)КомандаВыполните в каталоге предполагаемого репозитория; команды только читают настройки и состояние, если репозиторий доступен.
git rev-parse --show-toplevelgit statusgit remote -v
Если .git случайно удалён, но у вас есть удалённый репозиторий, склонируйте его заново и перенесите свои файлы. Если вы работаете на сетевом диске или в WSL с папкой Windows, возникают проблемы с правами: храните проект в файловой системе WSL (~/project). Для ошибки «dubious ownership» убедитесь, что вы действительно доверяете папке. Подробности — и книга .
Если вы открыли проект в IDE и она сообщает о том же, проверьте, что открыта корневая папка репозитория, а не её подпапка с копией файлов. В Windows убедитесь, что папка .git не скрыта и не удалена антивирусом: включите показ скрытых элементов (Проводник → Вид → Показать → Скрытые элементы). Чтобы быстро увидеть, в каком репозитории вы находитесь, выполните git rev-parse --git-dir. Если нужно восстановить историю, клонируйте удалённый репозиторий в новую папку и скопируйте в неё изменения вручную, затем проверьте git diff.