Это огромная боль в заднице. У меня это было несколько раз, и я не понимаю, почему. 5 мин назад репо было прекрасно и работало, я перемещаю некоторые файлы вокруг (что все круто и все), а git шьет штаны. Любая идея, почему это происходит? Как я могу исправить это, кроме клонирования репо, перемещения файлов и т.д.
Почему я получаю "фатальный: статус git статус - не удалось?"?
Ответ 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
.