Git репо с ошибкой с сообщением, что это не репо ... но это - PullRequest
8 голосов
/ 07 июня 2011

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

fatal: Not a git repository (or any parent up to mount parent /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

У меня есть каталог .git, и он заполнен тысячами коммитов, которые у меня есть для этого репо. Я не хочу повторно инициализировать репозиторий, опасаясь, что он перезапишет историю. Я также не хочу повторно извлекать его из github, так как у меня есть несколько изменений, спрятанных в ветках, которые я давно не помещал в GH.

редактирование:

Я вполне уверен, что это не мое окружение. Другие репозитории git работают просто отлично

Ответы [ 5 ]

7 голосов
/ 07 июня 2011

Я хотел бы опубликовать некоторые комментарии из соответствующего исходного файла git:

Обнаружение репозитория Git выполняется следующим образом:

/*
 * Test in the following order (relative to the cwd):
 * - .git (file containing "gitdir: <path>")
 * - .git/
 * - ./ (bare)
 * - ../.git
 * - ../.git/
 * - ../ (bare)
 * - ../../.git/
 *   etc.
 */

И он выясняет, что это gitрепо, как показано ниже:

/*
 * Test if it looks like we're at a git directory.
 * We want to see:
 *
 *  - either an objects/ directory _or_ the proper
 *    GIT_OBJECT_DIRECTORY environment variable
 *  - a refs/ directory
 *  - either a HEAD symlink or a HEAD file that is formatted as
 *    a proper "ref:", or a regular file HEAD that has a properly
 *    formatted sha1 object name.
 */

Посмотрите, что не так с вашим .git.Это связано с ответом @Chris Nicola о том, что HEAD в нижнем регистре и т.д.

3 голосов
/ 07 июня 2011

Трудно сказать точную причину, но ваш .git должен быть как-то поврежден.Здесь есть запись в блоге здесь , где какой-то парень переименовал свой файл HEAD во все строчные буквы в своей системе, что вызвало у него эту проблему.Не говорю, что это ваша конкретная проблема, но вы, возможно, захотите взглянуть поближе на папку .git.

Вы можете попробовать извлечь из github новую папку, а затем сравнить две папки .git на предмет различий.

1 голос
/ 26 октября 2012

Другая возможность может заключаться в том, что права доступа к вашим файлам git были повреждены.Убедитесь, что у вас есть права на чтение.

У меня возникла похожая проблема, когда моё разрешение испортилось при подключении к компьютеру.

0 голосов
/ 15 декабря 2013

Проверьте, даете ли вы эту команду из правильного каталога. Я столкнулся с той же ошибкой. Затем я пошел в каталог, где присутствует .git и дал команду. Он работает правильно.

0 голосов
/ 07 июня 2011

В любом случае клонировать в другой каталог. Вы можете скопировать объект из .git dir в исходном репо со стэшами в папку .git в новом репо. Пропустите любые файлы, которые будут перезаписаны. После этого вы сможете скопировать указатели тайника и gitk - все должны показать вам их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...