Подтвердить что ты не робот

Почему я получаю "фатальный: статус git статус - не удалось?"?

Это огромная боль в заднице. У меня это было несколько раз, и я не понимаю, почему. 5 мин назад репо было прекрасно и работало, я перемещаю некоторые файлы вокруг (что все круто и все), а git шьет штаны. Любая идея, почему это происходит? Как я могу исправить это, кроме клонирования репо, перемещения файлов и т.д.

4b9b3361

Ответ 1

Боже мой, я такой провал. Похоже, проблема связана с копированием Flash Builder поверх других .git-репозиториев в подпапки. Ответ заключается в том, чтобы удалить все папки .git, которые не являются репо.

Ответ 2

В случае, если это помогает кому-то еще, я просто столкнулся с той же проблемой и обнаружил, что запуск git init в корне проекта исправлен.

Ответ 3

Я столкнулся с этой ошибкой из-за поврежденного/не правильно инициализированного подмодуля (со своей собственной подпапкой .git). Я временно удалил папку подмодулей и использовал git init в корне основного проекта. Исправлена ​​проблема для меня.

Ответ 4

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

В моем репозитории есть два подмодуля. После перезагрузки я начал получать сообщение об ошибке фатальный: git status -porcelain failed.

Решение заключалось в проверке свойства worktree в каждом файле подмодуля config - например, <repository-checkout>/.git/modules/<submodule-name>/config.

У меня был один недопустимый путь для свойства worktree. Он ссылался на неиспользуемую папку, которая была изменена и объединена с master - вероятно, из-за ошибки, разрешающей конфликты.

Ответ 5

У меня была такая же проблема. Запуск git status в моем корневом каталоге проекта вызвал следующую ошибку:

fatal: This operation must be run in a work tree
fatal: 'git status --porcelain' failed in submodule js/object-subscribe

Запуск git status в затронутом подмодуле (js/object-subscribe) приведет к ошибке:

fatal: This operation must be run in a work tree

Запуск git init в этой папке подмодуля сделал это для меня.

Ответ 6

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

Ответ 7

Обычно git создает скрытый каталог в корневом каталоге проекта (.git/)

Когда вы работаете над CMS, возможно, вы установите модули/плагины, несущие каталог .git/с метаданными git для конкретного модуля/плагина

Если вы не хотите использовать функцию подмодулей git, самое быстрое решение удаляет все каталоги .git, кроме каталога каталогов root git. Если вы это сделаете, git не будет рассматривать эти модули как подмодули проекта.

cd /path/to/your/project/code
find ./ | grep ".git/index"

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

Ответ 8

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

В моем случае я установил каталог git в докере и проверил там статус. Файл .git этого подмодуля содержал абсолютный путь, который был недопустим в докере. Я отредактировал этот файл .git на , изменив путь gitdir на относительный путь.

Git версия: 2.7.4

Ответ 9

В моем случае после перемещения moduleA/mySubmodule до moduleB/mySubmodule с помощью git mv moduleA moduleB с git 2.12.2 я столкнулся с следующей ошибкой:

$ git status
fatal: Could not chdir to '[../]moduleA/mySubmodule': No such file or directory
fatal: 'git status --porcelain' failed in submodule mySubmodule
fatal: 'git status --porcelain' failed in submodule moduleB

Затем я сделал следующее (возможно, не в этом порядке)

  • Вручную обновить запись .gitmodules до moduleB
  • Введите .git/modules и переименуйте папку старого модуля
  • Введите moduleB и удалите папку подмодулей
  • Запустите git submodule sync и git submodule update

После этого я мог бы без проблем запускать git status.

Ответ 10

Для меня все было иначе, ни git init решил проблему, ни worktree не ошиблись. Ошибка, которая у меня была

fatal: unable to create threaded lstat
fatal: 'git status --porcelain=2' failed in submodule ext/hdf5

Решением для меня было git gc.