Не удается открыть FETCH_HEAD после переименования ветки

После переименования ветки "master" (используя Sourcetree), я больше не могу получить изменения, сделанные в удаленном репозитории.

Я получаю сообщение об ошибке:

error: cannot open .git/FETCH_HEAD: Permission denied

Когда я открываю этот файл, я вижу, что ответная ветвь все еще установлена ​​в сторону branch 'master'.

Взглянув на удаленный репозиторий, я увидел, что ветка с именем "master" все еще существует, в дополнение к переименованной ветке, где я объединил свои последние изменения. Я думаю, что где-то есть проблема, и переименование не было правильно реплицировано в удаленном репозитории.

Я попытался вручную отредактировать FETCH_HEAD (меняя полный SHA и направленную ветвь), но я все еще получаю эту ошибку. Конечно, я не могу переименовать снова, как перед моей главной ветвью, поскольку всегда присутствует ветвь с именем "master" .

Есть ли способ решить эту проблему?

Ответ 1

На самом деле кажется, что эта проблема (потенциально) связана с комбинацией различных факторов:

  • Я действительно переименовал ветку (но это не похоже на главную причину)
  • Я также обновил имя пользователя и адрес электронной почты (это может поддержать анализ, который я выполнял различными операциями как какой-либо другой пользователь).
  • Некоторые ветки не могли быть извлечены, конечно, из-за известной ошибки SourceTree (которая внезапно прекратила отслеживание некоторых удаленных ветвей)

Поскольку использование команды chown кажется неэффективным, я, наконец, разрешил свою проблему, используя следующий процесс:

  • Удаление отрицаемого файла с помощью команды rm -f .git/FETCH_HEAD (как описано в этом ответе)
  • Повторное подключение необработанных ветвей с помощью команды git branch -u (как описано в этот комментарий)

После этого мне удалось получить все удаленные ветки, и теперь все правильно синхронизировано с моим локальным репозиторием.