Sourcetree работает в Windows, но каталог Git пуст и выдает ошибки - PullRequest
1 голос
/ 20 сентября 2019

У меня есть много репозиториев Git, клонированных через Sourcetree на Windows.Один конкретный репозиторий работает должным образом (я могу фиксировать, выдвигать, извлекать и т. Д.), За исключением того, что его каталог Git полностью пуст и выдает мне ошибки о git status не работе.Все остальные мои (многие) репозитории работают полностью.

Сообщение об ошибке в SourceTree:

«состояние git» не выполнено с кодом ошибки 128: fatal: эта операция должна быть запущенав рабочем дереве
(C: \ {полный путь к каталогу})

SourceTree: 'git status' failed with error code 128: fatal: this operation must be run in a work tree

Сообщение об ошибке при запуске git statusв том же каталоге (который полностью пуст) находится:

C:\{full path to directory}>git status
fatal: this operation must be run in a work tree

Как узнать, где Sourcetree ссылается на этот конкретный репозиторий Git, чтобы я мог переместить его в правильное местоположение илив противном случае исправьте ошибку git status?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Каким-то образом этот репозиторий был проверен как пустой репозиторий.Если вам интересно, это ненормально!

В каталоге запустите:

git config --local --bool core.bare false
git reset

Я на самом деле отредактировал файл конфигурации Git и вручную изменил true на false, затем запустил вторую команду (git reset), но приведенные выше команды должны иметь тот же эффект.

После этого все файлы в текущей ветви должны быть видны.

0 голосов
/ 20 сентября 2019

Это зависит от точной ошибки, которую дает вам git-статус, но вы должны:

  • проверить в командной строке (не SourceTree)
  • посмотреть, есть ли .gitmodulesкоторый может объявить репо как подмодуль.

ОП добавляет ошибку:

 this operation must be run in a work tree

Это типично для bare репозитория, где естьфайлы не извлекаются, а только внутренние папки Git-репо (refs/, objects/, ...).

В этом случае ожидается ошибка:

  • Снова клонируйте этот репозиторий, на этот раз без опции --bare.
  • Или преобразовать локальное клонированное голое репо в не голое хранилище .

В частности, этот ответ , который включает в себя:

git config --local --bool core.bare false
git config --local remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch origin
git branch -u origin/master master

# reset the index (not the working tree)
git reset HEAD -- .
...