Получение «рокового: не репозиторий git» при удаленном добавлении репозитория Git

440

Я знакомлюсь с Git, следуя этому руководству:

Все работает нормально до той части, где репо добавляется на мою локальную машину:

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(После замены USERNAME, NFSNSERVER и REPOAME на правильные имена) я получаю сообщение об ошибке:

fatal: Not a git repository (or any of the parent directories): .git

Можете ли вы помочь мне пройти этот шаг?

Corey
источник
2
git initно также убедитесь, что ни одна из ваших подкаталогов не имеет своей собственной .gitпапки
Джеймс Оравец

Ответы:

909

Вы инициировали локальный репозиторий Git, в который предполагается добавить этот пульт?

В вашем локальном каталоге есть .gitпапка?

Попробуй git init.

Ассаф Лави
источник
2
Я уже сделал этот шаг, но должен был сделать это снова после того, как я настроил свою учетную запись в моторном дворе и установил моторный парк.
AVProgrammer
3
моя .gitпапка пропала. Это git initто же самое, что удалить папку хранилища, а затем git clone .... Все, что мне нужно сделать, этоpull
Франциско Корралес Моралес
3
@FranciscoCorralesMorales, если ваша .gitпапка исчезла, вы можете запустить git initснова, чтобы создать новую. Вам нужно будет повторно добавить пульт, прежде чем вы сможете извлечь из него.
3
Я получал ту же ошибку при отправке изменений из локальной системы. Пробовал git init и все заработало. Спасибо!
rbashish
6
у меня есть .git, и я уже сделал git init, но я получаю ошибкуjalal@klein:~/computer_vision/py-faster-rcnn$ git add -A fatal: Not a git repository: caffe-fast-rcnn/../.git/modules/caffe-fast-rcnn
Мона Джалал
85

Вы получите эту ошибку, если попытаетесь использовать команду Git, когда ваш текущий рабочий каталог не находится в репозитории Git. Это потому, что по умолчанию Git будет искать .gitкаталог репозитория (внутри корня проекта?), Как указано в моем ответе «Git не будет показывать журнал, если я не нахожусь в каталоге проекта» :

Согласно официальной документации Linux Kernel Git , GIT_DIR[переменная окружения] .gitпо умолчанию настроена на поиск каталога (в текущем рабочем каталоге?):

Если GIT_DIRзадана переменная среды, она указывает путь для использования вместо .gitбазового по умолчанию для хранилища.

Вам либо нужно cdвойти в репозиторий / рабочую копию, либо вы не инициализировали или не клонировали репозиторий в первую очередь, и в этом случае вам нужно инициализировать репо в каталоге, где вы хотите разместить репо:

git init

или клонировать хранилище

git clone <remote-url>
cd <repository>
Сообщество
источник
13
+1 за упоминание GIT_DIR. внутри хуков в голом репо, GIT_DIR установлен в '.' вместо «.git».
Commonpike
+1 за git init. После прочтения вашего ответа, я использовал это несколько раз в хранилищах , что я сделал клон, но не был признан. Таким образом, это кажется безопасным при запуске из дерева каталогов, которое, как предполагается git repository, имеет все файлы в каталоге git, но утверждает, что это не такfatal: Not a git repository (or any parent up to mount point
ElderDelp
34

Моя проблема заключалась в том, что для некоторых сбоев с моей ОС любая команда в моем локальном репозитории заканчивалась "fatal: не git-репозиторий (или любой из родительских каталогов): .git", включая команду fsck.

Проблема была в пустом файле HEAD .

Мне удалось найти фактическое имя ветки, над которым я работал, в .git / refs /head, а затем я сделал это:

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

Это сработало.

Марчин Т.П. Лужинский
источник
2
Мой файл HEAD по какой-либо причине был поврежден, поэтому я должен был восстановить его и исправить проблему
Стивен
1
Вы отличный друг.
Сэкономила тонну
Это была моя проблема также. Спасибо
Карлос Рафаэль Рамирес
3
У меня была открытая Visual Studio во время git rebase, и Visual Studio заметила изменение файла, и вскоре после этого у меня был синий экран смерти. После перезагрузки .git / HEAD был заполнен значениями NULL и когда я заменил их на полный хеш (5621afeffbabed40e3f386676068c45643644b7d), считанный откуда-то наподобие .git \ refs \ remotes \ origin \ master, git снова начал работать, мне также нужно было stackoverflow.com/questions / 1115854 /… так как это говорит мне об удалении .git / index, и мне нужно было удалить .git / index.lock перед выполнением сброса git. Хорошо сейчас
Иван
1
Я почти потерял надежду вернуть свою работу. Просто я копирую и вставляю ваше решение, и оно волшебно. Спасибо
Мукеш Кумар
17

ПРИМЕЧАНИЕ: это не отвечает на общую проблему, которая была проблемой OP, но на другую проблему, где может появиться это сообщение об ошибке. Я не хотел задавать новый вопрос, просто чтобы записать этот ответ, и скажите мне, если я должен сделать это вместо этого: P

Я попал в ситуацию, скорее всего, из-за некоторого искажения определенного сбоя, что я получил эту ошибку, даже когда .gitона существовала.

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

Поскольку у меня не было ничего, что действительно нуждалось в сохранении, я просто пошла глупым путем и сделала ...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

Тем не менее, не работает, как, например, git logвозвращает fatal: bad default revision 'HEAD'. Правда, там были удаленные действия , поэтому я сделал это, git fetch --allа затем просто пришел git reset --hard origin/masterв состояние, в котором был репо.

Обратите внимание, что если есть некоторые незафиксированные изменения, вы можете увидеть их с помощью git status, git diffи так далее. Затем git diff yourfile > patchперед запуском перезагрузки.

По крайней мере, для меня reflog ( git reflog) исчез полностью. Следовательно, если вы делаете сброс, и вы хотели предотвратить некоторые изменения, я не уверен, что вы сможете вернуть их после сброса. Поэтому убедитесь, что у вас есть все резервные копии изменений, которые вы не можете потерять, в конечном итоге, просто скопировав клон, прежде чем пытаться это сделать.

Smar
источник
Я получил вопрос. И попробовал, как упомянул @Smar, но тот же результат "фатально ....". Итак, что делать дальше? любое предложение?
Хаос
1
Эта проблема возникла во время использования Visual Studio, git initи git fetch --allдействительно исправила проблему.
Морзе
7
$ git status
fatal: Not a git repository:

Просто введите следующее в вашей командной оболочке cmd или git или любом другом терминале:

$ git init
der_michael
источник
6

Эта проблема возникла у меня после того, как я переместил расположение git-проекта в файловую систему. Когда я запустил некоторые команды git, произошла ошибка, например:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

Я нашел в /home/rospasta/path_old/gitprojecta/.travis/.gitабсолютном пути, старое местоположение проекта было написано. Обновление этого пути в новом месте вручную решило проблему для меня.

Так что моя проблема может или не может быть проблема мерзавца, но HTH.

Айзекс
источник
5

В случае, если это кому-то поможет, я получил это сообщение об ошибке после случайного удаления .git / objects /

Неустранимый: не репозиторий git (или любой из родительских каталогов): .git

Восстановление его решило проблему.

eduherminio
источник
4

В командной строке / CLI вы получите эту ошибку, если ваш текущий каталог НЕ является хранилищем. Итак, вы должны сначала CD в репо.

Сид Смит
источник
4

Возможно, слишком поздно, но другое решение, которое может помочь будущим посетителям. Сначала удалите старый .gitкаталог -

rm .git

Затем снова инициализируйте git-репо

git init
kevthanewversi
источник
6
Следует отметить, что это уничтожает все метаданные git, такие как коммиты. Вы сохраните свои данные, но Git «начнет все сначала» - это может быть не очень хорошо.
Джозеф А.
1
@ Джозеф А .: ты прав, это неоптимально. Есть ли лучшее решение, которое вы можете предложить? Я получаю сообщение об fatalошибке, даже если .gitпапка существует.
Хасан
Но эй, разве коммиты уже не находятся на удаленном репо? Или для чего вам действительно нужны коммиты на вашем HD / локально для ...? @JosephA.
kevthanewversi
Потому что я думаю, что вы все еще можете делать такие вещи, как git revert, git reset без локальной информации о коммите ... верно? @JosephA.
kevthanewversi
1
Это стирает все! Вероятно, худший способ решить эту проблему.
Ричард Лалансетт
4

Кажется, вы не идете в свою папку. Например, если я работаю над проектом с именем bugsBunny, и он сохранен в папке d: / work: code, то сначала вы должны перейти в эту папку с помощью cd d: / work / code / bugsBunny, а затем можете продолжать использовать ваши команды git.

Викрант Сингх
источник
4

Даже у меня была такая же проблема. я написал скрипт оболочки, который будет копировать все мои коды в мое git-репо в рабочие дни недели в 17:55 с помощью crontab. просмотрев логи cron я обнаружил вышеупомянутую проблему.

Вышеприведенная проблема возникает только тогда, когда вы пытаетесь выполнить команды git из не-gir-каталога (то есть из другого каталога, который не является рабочей копией). чтобы исправить это добавление -C <git dir>в команду git, которую вы выполняете так, что git statusбудет git -C /dir/to/git statusи git add -Aбудет git -C /dir/to/git -A.

Mani
источник
3

В моем случае я использовал Tortoise SVN и допустил ошибку, чтобы одновременно использовать функции GIT Visual Studio. Это заставило Visual Studio заблокировать файл HEAD внутри папки .git, чтобы ни VS, ни Tortoise не могли получить доступ к репо, и я получил ошибку «fatal: Not the git repo ...» в обоих приложениях.

Решение:

  1. Зайдите в папку .git и переименуйте «HEAD.lock» в «HEAD».
  2. Выберите одно приложение администратора GIT и не трогайте другое
Адриан Рошка
источник
3

Для этого вам нужно ввести одну команду, которая отсутствует в командах bitbucket

Пожалуйста, попробуйте git init.

ВИКАС КОЛИ
источник
2

в моем случае у меня была такая же проблема, когда я пробовал любые команды git (например, git status), используя windows cmd. так что я делаю после установки git для окна https://windows.github.com/ в переменные окружения, добавив путь к классу git в переменную «PATH». обычно git устанавливается на C: / user / "username" / appdata / local / git / bin и добавляет это в PATH в переменной среды

и еще одна вещь в cmd идет в ваш git-репозиторий или cd, где ваш клон находится в вашем окне, обычно они будут храниться в документах в github cd Document / Github / yourproject, после чего вы можете иметь любые команды git

благодарю вас

Keyo
источник
2

Перейдите в исходную папку, где хранится локальный репозиторий, например, мой пример находится в c: / GitSource, щелкните правой кнопкой мыши в папке, нажмите здесь git bash, затем git status ....

wesley7
источник
2

GIT_DIR должен быть не установлен: unset GIT_DIR

Okwap
источник
2

В моем случае файл .git / HEAD был поврежден (содержал только точки). Поэтому я отредактировал его и заменил его на:

ref: refs/heads/master

и это снова заработало.

Cryss
источник
1

Для меня это было связано с неправильным владением .git/ пути. rootпринадлежит .git/HEADи .git/index, не давая jenkinsпользователю запустить работу.

Хью Эско
источник
1
Это не воспроизводится в командной строке. После установления права собственности .git/HEADи .git/indexк root:root, я все еще в состоянии добавить пульты без ошибок. При изменении права собственности на весь .gitкаталог до root, я получаю другую ошибку: error: could not lock config file .git/config: Permission denied.
Кайл Стрэнд,
1

Ниже показано, что Gits не нашел файл .git в текущем каталоге, поэтому выдается сообщение об ошибке.

Поэтому перейдите в каталог на каталог репозитория, в котором вы извлекаете код из git, а затем выполните эту команду.

  • $ git checkout
Аджай Кумар
источник
1

В моем случае я обнаружил, что git в windows стал чувствительным к регистру для буквы диска с некоторой точки.

После обновления бинарного git в windows cli команды, которые раньше работали, прекратились. например, путь в сценарии был D : \ bla \ file.txt, а команда git принимала только d : \ bla \ file.txt

ilane
источник
1

мерзавец работал нормально, чтобы быть, и вдруг он начал показывать это fatal: Not a git repository (or any of the parent directories): .git сообщение.

Для меня не уверен, что было повреждено в папке .git, я сделал git clone ** newfolder и скопировал всю папку .git в мою поврежденную / старую папку, где я вносил изменения, прежде чем git начал показывать сообщение об ошибке ..

Все вернулось на круги своя, и git также распознал мои измененные / неустановленные файлы.

Ниль
источник
0

восстановить .git/ORIG_HEADи другие корневые файлы репозитория .git

Я получил эту ошибку после восстановления из резервной копии, по-видимому, файлы, содержащиеся в корне каталога .git, не дошли до цели, но все подпапки сделали это сначала, я думал, что хранилище не повреждено.

Я исправил это, восстановив корневые файлы.

AndrewD
источник
0

У меня была эта проблема с плагином Jenkins Git после проблем аутентификации с GitLab. Дженкинс сообщал о hudson.plugins.git.GitException: [...] stderr: GitLab: Проект, который вы искали, не найден. Неустранимый: Не удалось прочитать из удаленного хранилища.

Однако, если бы я делал 'git clone' или 'git fetch' прямо из окна Jenkins (командная строка), это работало без проблем.

Проблема была решена путем удаления всего каталога / рабочей области в папке заданий Jenkins для этой конкретной работы, например

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

Предположительно, локальная папка .git устарела?

GreensterRox
источник
0

Это также может быть связано с разрешениями. Проверьте разрешения владельца / группы и убедитесь, что у вас есть соответствующие разрешения для доступа к этим данным. В моем случае я сталкивался с этой ошибкой при запуске «git status» в репозитории, в качестве владельца которого было установлено root: root. Запуск "git status" от имени root решил мою проблему. В качестве альтернативы, если вы не хотите, чтобы владельцем группы / пользователя был root: root, добавьте репо к тому, к чему у вас есть доступ.

Элит
источник
0

У меня была эта проблема, и я исправил ее, добавив файл README.md

Супун Кавинда
источник