сброс git --hard происхождение/мастер сбой

Попытка отменить изменения на сервере и сделать его точно таким же, как origin/master:

git fetch --all
git reset --hard origin/master

Я делал это раньше на одном и том же репо без проблем, но на этот раз он терпит неудачу со следующим:

fatal: Could not reset index file to revision 'origin/master'

Попробовали следующее:

  1. удалить индекс и сбросить, как предлагается здесь:

    rm .git/index
    git reset
    
  2. также предложил здесь, что некоторый процесс может иметь блокировку на.git\index. Этот процесс убийства, а затем выполнение git reset может исправить его, но не уверен, как проверить, что что-то блокирует файл удаленно. Также кажется, что удаление индексного файла и сброс имели бы такой же эффект.

Потеря моего ума. Было бы очень полезно помочь.

Ответ 1

У меня была та же проблема, которая всегда приводила к сумасшедшей причине reset --hard, но, похоже, у рабочего дерева было много различий с моей целевой веткой.

У меня не было времени выкопать это, но нашел это случайно:

Сначала запустите git gc чтобы выполнить сборку мусора. Он удалит ненужные файлы и оптимизирует локальный репозиторий (более подробную информацию о git gc можно найти здесь).

Затем простой reset и, наконец, reset --hard до нужной ветки.

$ git gc

$ git reset

$ git reset --hard <target_branch>